{
  "contractName": "OwnerManager",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "ComplianceInteraction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "RoleAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "RoleRemoved",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addClaimRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addComplianceManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addComplianceSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addIssuersRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addOwnerAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addRegistryAddressSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "addTokenInfoManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isClaimRegistryManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isComplianceManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isComplianceSetter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isIssuersRegistryManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isOwnerAdmin",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isRegistryAddressSetter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "isTokenInfoManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeClaimRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeComplianceManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeComplianceSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeIssuersRegistryManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeOwnerAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeRegistryAddressSetter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "removeTokenInfoManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_identityRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetIdentityRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetCompliance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "callData",
          "type": "bytes"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callComplianceFunction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTokenName",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTokenSymbol",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenOnchainID",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTokenOnchainID",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_claimTopicsRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetClaimTopicsRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_trustedIssuersRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callSetTrustedIssuersRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_claimTopics",
          "type": "uint256[]"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callAddTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callRemoveTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_claimTopics",
          "type": "uint256[]"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callUpdateIssuerClaimTopics",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_claimTopic",
          "type": "uint256"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callAddClaimTopic",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_claimTopic",
          "type": "uint256"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_onchainID",
          "type": "address"
        }
      ],
      "name": "callRemoveClaimTopic",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnComplianceContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnClaimTopicsRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "callTransferOwnershipOnIssuersRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callAddAgentOnTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callRemoveAgentOnTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callAddAgentOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_agent",
          "type": "address"
        }
      ],
      "name": "callRemoveAgentOnIdentityRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"ComplianceInteraction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_role\",\"type\":\"string\"}],\"name\":\"RoleAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_role\",\"type\":\"string\"}],\"name\":\"RoleRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"addClaimRegistryManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"addComplianceManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"addComplianceSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"addIssuersRegistryManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"addOwnerAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"addRegistryAddressSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"addTokenInfoManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"callAddAgentOnIdentityRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"callAddAgentOnTokenContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimTopic\",\"type\":\"uint256\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callAddClaimTopic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IClaimIssuer\",\"name\":\"_trustedIssuer\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_claimTopics\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callAddTrustedIssuer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callComplianceFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"callRemoveAgentOnIdentityRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_agent\",\"type\":\"address\"}],\"name\":\"callRemoveAgentOnTokenContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimTopic\",\"type\":\"uint256\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callRemoveClaimTopic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IClaimIssuer\",\"name\":\"_trustedIssuer\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callRemoveTrustedIssuer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_claimTopicsRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callSetClaimTopicsRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_compliance\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callSetCompliance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_identityRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callSetIdentityRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callSetTokenName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenOnchainID\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callSetTokenOnchainID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callSetTokenSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustedIssuersRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callSetTrustedIssuersRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"callTransferOwnershipOnClaimTopicsRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"callTransferOwnershipOnComplianceContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"callTransferOwnershipOnIdentityRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"callTransferOwnershipOnIssuersRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"callTransferOwnershipOnTokenContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IClaimIssuer\",\"name\":\"_trustedIssuer\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_claimTopics\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IIdentity\",\"name\":\"_onchainID\",\"type\":\"address\"}],\"name\":\"callUpdateIssuerClaimTopics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"isClaimRegistryManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"isComplianceManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"isComplianceSetter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"isIssuersRegistryManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"isOwnerAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"isRegistryAddressSetter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"isTokenInfoManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"removeClaimRegistryManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"removeComplianceManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"removeComplianceSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"removeIssuersRegistryManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"removeOwnerAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"removeRegistryAddressSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"removeTokenInfoManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ComplianceInteraction(address,bytes4)\":{\"details\":\"Event emitted for each executed interaction with the compliance contract. For gas efficiency, only the interaction calldata selector (first 4 bytes) is included in the event. For interactions without calldata or whose calldata is shorter than 4 bytes, the selector will be `0`.\"}},\"kind\":\"dev\",\"methods\":{\"callAddAgentOnIdentityRegistryContract(address)\":{\"details\":\"calls the `addAgentOnIdentityRegistryContract` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-addAgentOnIdentityRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callAddAgentOnTokenContract(address)\":{\"details\":\"calls the `addAgentOnTokenContract` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-addAgentOnTokenContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callAddClaimTopic(uint256,address)\":{\"details\":\"calls the `addClaimTopic` function on the Claim Topics Registry contract  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function  See {IClaimTopicsRegistry-addClaimTopic}.  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callAddTrustedIssuer(address,uint256[],address)\":{\"details\":\"calls the `addTrustedIssuer` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function  See {ITrustedIssuersRegistry-addTrustedIssuer}.  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callComplianceFunction(bytes,address)\":{\"details\":\"calls any onlyOwner function available on the compliance contract  OwnerManager has to be set as owner on the compliance smart contract to process this function  Requires that `_onchainID` is set as ComplianceManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callRemoveAgentOnIdentityRegistryContract(address)\":{\"details\":\"calls the `removeAgentOnIdentityRegistryContract` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callRemoveAgentOnTokenContract(address)\":{\"details\":\"calls the `removeAgentOnTokenContract` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-removeAgentOnTokenContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callRemoveClaimTopic(uint256,address)\":{\"details\":\"calls the `removeClaimTopic` function on the Claim Topics Registry contract  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function  See {IClaimTopicsRegistry-removeClaimTopic}.  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callRemoveTrustedIssuer(address,address)\":{\"details\":\"calls the `removeTrustedIssuer` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function  See {ITrustedIssuersRegistry-removeTrustedIssuer}.  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callSetClaimTopicsRegistry(address,address)\":{\"details\":\"calls the `setClaimTopicsRegistry` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-setClaimTopicsRegistry}.  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callSetCompliance(address,address)\":{\"details\":\"calls the `setCompliance` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setCompliance}.  Requires that `_onchainID` is set as ComplianceSetter on the OwnerManager contract  Requires that msg.sender is a MANAGEMENT KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callSetIdentityRegistry(address,address)\":{\"details\":\"calls the `setIdentityRegistry` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setIdentityRegistry}.  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callSetTokenName(string,address)\":{\"details\":\"calls the `setName` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setName}.  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callSetTokenOnchainID(address,address)\":{\"details\":\"calls the `setOnchainID` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setOnchainID}.  Requires that `_tokenOnchainID` is set as TokenInfoManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callSetTokenSymbol(string,address)\":{\"details\":\"calls the `setSymbol` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setSymbol}.  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callSetTrustedIssuersRegistry(address,address)\":{\"details\":\"calls the `setTrustedIssuersRegistry` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-setTrustedIssuersRegistry}.  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"callTransferOwnershipOnClaimTopicsRegistryContract(address)\":{\"details\":\"calls the `transferOwnershipOnClaimTopicsRegistryContract` function on the Claim Topics Registry contract  OwnerManager has to be set as owner on the Claim Topics registry smart contract to process this function  See {IClaimTopicsRegistry-transferOwnershipOnClaimTopicsRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callTransferOwnershipOnComplianceContract(address)\":{\"details\":\"calls the `transferOwnershipOnComplianceContract` function on the Compliance contract  OwnerManager has to be set as owner on the Compliance smart contract to process this function  See {ICompliance-transferOwnershipOnComplianceContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callTransferOwnershipOnIdentityRegistryContract(address)\":{\"details\":\"calls the `transferOwnershipOnIdentityRegistryContract` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callTransferOwnershipOnIssuersRegistryContract(address)\":{\"details\":\"calls the `transferOwnershipOnIssuersRegistryContract` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers registry smart contract to process this function  See {ITrustedIssuersRegistry-transferOwnershipOnIssuersRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callTransferOwnershipOnTokenContract(address)\":{\"details\":\"calls the `transferOwnershipOnTokenContract` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-transferOwnershipOnTokenContract}.  Requires that msg.sender is an Admin of the OwnerManager contract\"},\"callUpdateIssuerClaimTopics(address,uint256[],address)\":{\"details\":\"calls the `updateIssuerClaimTopics` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function  See {ITrustedIssuersRegistry-updateIssuerClaimTopics}.  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`\",\"params\":{\"_onchainID\":\"the _onchainID contract of the caller, e.g. \\\"i call this function and i am Bob\\\"\"}},\"constructor\":{\"details\":\"the constructor initiates the OwnerManager contract  and sets msg.sender as owner of the contract\",\"params\":{\"_token\":\"the token managed by this OwnerManager contract\"}},\"isClaimRegistryManager(address)\":{\"details\":\"ClaimRegistryManager Role _claimRegistryManager\"},\"isComplianceManager(address)\":{\"details\":\"ComplianceManager Role _complianceManager\"},\"isComplianceSetter(address)\":{\"details\":\"ComplianceSetter Role _complianceSetter\"},\"isIssuersRegistryManager(address)\":{\"details\":\"IssuersRegistryManager Role _issuersRegistryManager\"},\"isOwnerAdmin(address)\":{\"details\":\"OwnerAdmin Role _ownerAdmin\"},\"isRegistryAddressSetter(address)\":{\"details\":\"RegistryAddressSetter Role _registryAddressSetter\"},\"isTokenInfoManager(address)\":{\"details\":\"TokenInfoManager Role _tokenInfoManager\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"token\":{\"details\":\"the token that is managed by this OwnerManager Contract\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/roles/OwnerManager.sol\":\"OwnerManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@onchain-id/solidity/contracts/interface/IClaimIssuer.sol\":{\"keccak256\":\"0xd0493be7cb7342962b46f8e2afdca4614ea0fe34a7f493b2da9db7d361a9042c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://105232aae24e3d0fcb4c80c00793b61b6019f6127c0ec6f9e3082ae01b2e778b\",\"dweb:/ipfs/QmV5C1wbq7H5H6DiakafSX5agAAP6rQSZ5qq7Qgq6VLkXo\"]},\"@onchain-id/solidity/contracts/interface/IERC734.sol\":{\"keccak256\":\"0x3302de9e9fe7a548cb7395b6fda38f952f6a6d1c599dfeee181a1ef80741fc1d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fc9f00e5b2f1523fecf52b1a833e9263a53edbebb7d1458f9004cfd41dd0402e\",\"dweb:/ipfs/QmWcNcVQrg66KeQz39jPgJun7jF3CbdJKHQa19q97n5Hzb\"]},\"@onchain-id/solidity/contracts/interface/IERC735.sol\":{\"keccak256\":\"0x3b77ce6012a96cf0075197cdeb1b98b66ca1722ef23241e40ba6185f03bf4584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://766e139f0c3cc0c6489561e75df0d8eab8c277f90009e4fa19add4f22bb40d82\",\"dweb:/ipfs/QmcbAReZn9nLcnYn9AHiDmcYJ42JqAU5QSy4dKhUcJUnjy\"]},\"@onchain-id/solidity/contracts/interface/IIdentity.sol\":{\"keccak256\":\"0xdcefbe2a850f9f43e959b9f7ed93fd5b35f29ff3dfbfaac7530af737c9eba7c6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://2e887c7cc67fdb2710c48bed22dbb27880f6dfb84ee93178ad4fcd659099cb96\",\"dweb:/ipfs/QmUuDEsZJC7uQQEErmuNJzePsNgHiTDdS2TuMzG1GRqrC3\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"project:/contracts/compliance/ICompliance.sol\":{\"keccak256\":\"0x4049905b34eab118c0c3f644450299a5ed8022bbbdb26036e7c2854dae8ae1ba\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f8144953d88f543b2f537514f1136b8adf705837ba6d420b95569f6895153edb\",\"dweb:/ipfs/QmRqM7A6XrofFR67k8RtNNEkriAbKsQHDgUYaKZTMr9Nm5\"]},\"project:/contracts/registry/IClaimTopicsRegistry.sol\":{\"keccak256\":\"0x95f8fa17a716771125b203f00890eceb20ac3807f7a39a25b644427b1ff81d61\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://460dceb9e88957d5ce002b80748767c80a7e146c9b38b055a3c1ca04586b2009\",\"dweb:/ipfs/QmVdqEpGMRzSpLKBCtPzaPGatBgUyNm3NS5rQnkkYMnc1C\"]},\"project:/contracts/registry/IIdentityRegistry.sol\":{\"keccak256\":\"0x16a31f2d35143f99cc6b83d0cf6e9da9543c2b8561712079098f3a39d12ae32a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7669a9272b1df8e27e0fc3f5f64977b2b16615e585b673383db1eb157a62bf7c\",\"dweb:/ipfs/QmQzXmoFcFyBPehPyiUzGjaKfXJHLEPZMtFTBTgjuCavah\"]},\"project:/contracts/registry/IIdentityRegistryStorage.sol\":{\"keccak256\":\"0x8cd4de1e77c5da8ca2ff732069bc184aef86bcb94f95a5229e5bd6336abbd06d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f88894a3d046940be03a12cc2da3b3fb6efb51e0461fbea060a9a3190cadcf16\",\"dweb:/ipfs/QmNndZUPdpc83A9LungeAsrcencq3CzTum1tkU6KVdSRNC\"]},\"project:/contracts/registry/ITrustedIssuersRegistry.sol\":{\"keccak256\":\"0x01af20f2f537db3122c60b7c6e60e5036e07c673ef9762428b42129f65fcbc60\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://28f514b876c975777fe84bdb9f96ec5c687e4e4ff5d2b14961ba61affc57d46c\",\"dweb:/ipfs/QmdbVRsg1Q71PVHYxy1r7e5MeiMN5hHHDD8vRnXBSr8JiV\"]},\"project:/contracts/roles/OwnerManager.sol\":{\"keccak256\":\"0xf24ad763091fcee85f76d68c85da71ee38f479a80bb2862ccf69ec44ecb9c456\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://29845968c8ee58588164a7fc3397e9ece71adf0b570a94505d36ea8b1f8a5f9c\",\"dweb:/ipfs/QmZ2yDjjC8Z4jrNdvDqMfkGiFq84279W7sJjKsAePiLWuh\"]},\"project:/contracts/roles/OwnerRoles.sol\":{\"keccak256\":\"0xbee04028f75c0a4b5e88734804eacf3df894f40e01d4c424ef6c80887deda098\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://cb4fb927124798f04c1263fdb07663cb5486be206686e18b191d8a0bee90aeed\",\"dweb:/ipfs/QmSsdAgzQK46QJnc7Lgheu5Vo7yUD68y8zVR2kUXwSrkDx\"]},\"project:/contracts/roles/Roles.sol\":{\"keccak256\":\"0x9e018cafd4e2a2890d4ed32f0a4e5edf92fe95000f35b15d7932890bd0efdb95\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6c07fd269689b662d782817bc4fdfc00d33fd7e320c20916528fff7853847954\",\"dweb:/ipfs/QmUz39kdgQM8M2W2gcBZ8Vi3mzzSmXUx9NXxTJatYYQJyw\"]},\"project:/contracts/token/IToken.sol\":{\"keccak256\":\"0x34ce3cabab2f6b66aeb4e89fe8e9952b8aa57663e7b33429963169a835fc1f25\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://cffd212e911fd0a6a402d5438e5f5da0c1637226bfcab173a7c58efba12f2655\",\"dweb:/ipfs/QmVbqFNczrUAETfAX6F9MxXKivALRvt1HBTMhrjAKWHniq\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620031d5380380620031d58339810160408190526200003491620000b5565b6200003f3362000065565b600880546001600160a01b0319166001600160a01b0392909216919091179055620000e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000c857600080fd5b81516001600160a01b0381168114620000e057600080fd5b9392505050565b6130de80620000f76000396000f3fe608060405234801561001057600080fd5b50600436106102255760003560e01c8063039ec2cd1461022a57806303ff50141461023f5780631096a7ec146102675780632447e50b1461027a578063256ccc071461028d57806328d7be34146102a05780632af70c30146102b35780632f56d91b146102c6578063309ff3d1146102d95780633ba7c75e146102ec5780633c734ce8146102ff578063405225541461031257806346b686f8146103255780634837b7971461033857806354b9797f1461034b5780635c5f20471461035e57806362cdd482146103715780636ff7bff714610384578063715018a614610397578063757d467f1461039f578063818ab8bd146103b257806382870937146103c557806385cef608146103d857806387cc060c146103eb578063882fc6ca146103fe5780638da5cb5b14610411578063934b2da41461042657806394e69f1b14610439578063951af88d1461044c57806399884aab1461045f5780639ce2d88e146104725780639d6de3bc14610485578063a66bcc1c14610498578063aa1cef56146104ab578063ac95fc91146104be578063ae5aaa3b146104d1578063ce4bdac7146104e4578063dd39042b146104f7578063e110255b1461050a578063e38123181461051d578063eeac6fe614610530578063f087249c14610543578063f2fde38b14610556578063faed696a14610569578063fc0c546a1461057c578063fc6de4b51461058f578063ff806311146105a2575b600080fd5b61023d610238366004612c29565b6105b5565b005b61025261024d366004612c29565b610666565b60405190151581526020015b60405180910390f35b61023d610275366004612c29565b610679565b610252610288366004612c29565b61078e565b61023d61029b366004612c29565b61079b565b61023d6102ae366004612c29565b610809565b61023d6102c1366004612c95565b610877565b61023d6102d4366004612ceb565b6109a2565b61023d6102e7366004612c95565b610b9f565b6102526102fa366004612c29565b610c93565b61025261030d366004612c29565b610ca0565b61023d610320366004612c29565b610cad565b61023d610333366004612c29565b610d44565b61023d610346366004612d1b565b610ddc565b61023d610359366004612c29565b610fdd565b61023d61036c366004612c95565b61106e565b61025261037f366004612c29565b611256565b61023d610392366004612c29565b611263565b61023d611300565b61023d6103ad366004612c29565b611314565b61023d6103c0366004612c29565b6113f4565b6102526103d3366004612c29565b611535565b61023d6103e6366004612c29565b611542565b61023d6103f9366004612db5565b611622565b61023d61040c366004612c29565b611714565b6104196117ab565b60405161025e9190612de3565b61023d610434366004612c29565b6117ba565b61023d610447366004612c29565b61184b565b61023d61045a366004612db5565b6118e2565b61023d61046d366004612c29565b611a12565b61023d610480366004612db5565b611b53565b61023d610493366004612db5565b611d18565b61023d6104a6366004612c29565b611e0a565b61023d6104b9366004612c29565b611ea2565b61023d6104cc366004612c29565b611f10565b61023d6104df366004612c29565b611fad565b61023d6104f2366004612c29565b612049565b61023d610505366004612ceb565b6120e0565b61023d610518366004612c29565b6122a7565b61023d61052b366004612c29565b612342565b61023d61053e366004612db5565b612422565b61023d610551366004612db5565b612586565b61023d610564366004612c29565b6126ea565b61023d610577366004612c29565b612763565b600854610419906001600160a01b031681565b61023d61059d366004612d1b565b6127fe565b6102526105b0366004612c29565b6129c7565b336105be6117ab565b6001600160a01b031614806105d757506105d733611256565b6105fc5760405162461bcd60e51b81526004016105f390612df7565b60405180910390fd5b6106076002826129d4565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b60405180910390a25050565b6000610673600483612a56565b92915050565b336106826117ab565b6001600160a01b0316148061069b575061069b33611256565b6106b75760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b0316636290865d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190612e78565b6001600160a01b0316637bcf0487826040518263ffffffff1660e01b81526004016107599190612de3565b600060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b5050505050565b6000610673600783612a56565b336107a46117ab565b6001600160a01b031614806107bd57506107bd33611256565b6107d95760405162461bcd60e51b81526004016105f390612df7565b600854604051630b422d8360e41b81526001600160a01b039091169063b422d83090610759908490600401612de3565b336108126117ab565b6001600160a01b0316148061082b575061082b33611256565b6108475760405162461bcd60e51b81526004016105f390612df7565b600854604051635dc7a3cb60e01b81526001600160a01b0390911690635dc7a3cb90610759908490600401612de3565b6108808161078e565b801561091d5750806001600160a01b031663d202158d336040516020016108a79190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b81526004016108dc929190612e95565b602060405180830381865afa1580156108f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091d9190612ea3565b6109395760405162461bcd60e51b81526004016105f390612ec5565b600854604051635c26412360e11b81526001600160a01b039091169063b84c82469061096b9086908690600401612f12565b600060405180830381600087803b15801561098557600080fd5b505af1158015610999573d6000803e3d6000fd5b50505050505050565b6109ab81610ca0565b8015610a485750806001600160a01b031663d202158d336040516020016109d29190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401610a07929190612e95565b602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190612ea3565b610a645760405162461bcd60e51b81526004016105f390612f41565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb9190612e78565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c9190612e78565b6001600160a01b03166308297846836040518263ffffffff1660e01b8152600401610b6991815260200190565b600060405180830381600087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050505050565b610ba88161078e565b8015610c455750806001600160a01b031663d202158d33604051602001610bcf9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401610c04929190612e95565b602060405180830381865afa158015610c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c459190612ea3565b610c615760405162461bcd60e51b81526004016105f390612ec5565b60085460405163c47f002760e01b81526001600160a01b039091169063c47f00279061096b9086908690600401612f12565b6000610673600383612a56565b6000610673600583612a56565b33610cb66117ab565b6001600160a01b03161480610ccf5750610ccf33611256565b610ceb5760405162461bcd60e51b81526004016105f390612df7565b610cf66003826129d4565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b33610d4d6117ab565b6001600160a01b03161480610d665750610d6633611256565b610d825760405162461bcd60e51b81526004016105f390612df7565b610d8d6004826129d4565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b610de5816129c7565b8015610e825750806001600160a01b031663d202158d33604051602001610e0c9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401610e41929190612e95565b602060405180830381865afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e829190612ea3565b610e9e5760405162461bcd60e51b81526004016105f390612f89565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f769190612e78565b6001600160a01b03166304bc7e848585856040518463ffffffff1660e01b8152600401610fa593929190612fd3565b600060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b5050505050505050565b33610fe66117ab565b6001600160a01b03161480610fff5750610fff33611256565b61101b5760405162461bcd60e51b81526004016105f390612df7565b6110266001826129d4565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b61107781610666565b80156111145750806001600160a01b031663d202158d3360405160200161109e9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b81526004016110d3929190612e95565b602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190612ea3565b61116f5760405162461bcd60e51b815260206004820152602660248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365204d60448201526530b730b3b2b960d11b60648201526084016105f3565b60085460408051636290865d60e01b815290516000926001600160a01b031691636290865d9160048083019260209291908290030181865afa1580156111b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dd9190612e78565b90506040518385823760008085836000865af16111fe573d6000803e3d6000fd5b50806001600160a01b03167f5779a24d18a4639b1d59461e68c00fb0cd02533a4c5a6ff3ca6363e23e2fff566112348686612ad9565b6040516001600160e01b0319909116815260200160405180910390a250505050565b6000610673600183612a56565b3361126c6117ab565b6001600160a01b03161480611285575061128533611256565b6112a15760405162461bcd60e51b81526004016105f390612df7565b6112ac6006826129d4565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b611308612ae9565b6113126000612b48565b565b3361131d6117ab565b6001600160a01b03161480611336575061133633611256565b6113525760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c99190612e78565b6001600160a01b0316635e5741f3826040518263ffffffff1660e01b81526004016107599190612de3565b336113fd6117ab565b6001600160a01b03161480611416575061141633611256565b6114325760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a99190612e78565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a9190612e78565b6001600160a01b031663d5144472826040518263ffffffff1660e01b81526004016107599190612de3565b6000610673600283612a56565b3361154b6117ab565b6001600160a01b03161480611564575061156433611256565b6115805760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190612e78565b6001600160a01b03166350bc7bda826040518263ffffffff1660e01b81526004016107599190612de3565b61162b8161078e565b80156116c85750806001600160a01b031663d202158d336040516020016116529190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611687929190612e95565b602060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190612ea3565b6116e45760405162461bcd60e51b81526004016105f390612ec5565b600854604051633d1ddc5b60e01b81526001600160a01b0390911690633d1ddc5b90610b69908590600401612de3565b3361171d6117ab565b6001600160a01b03161480611736575061173633611256565b6117525760405162461bcd60e51b81526004016105f390612df7565b61175d6007826129d4565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b6000546001600160a01b031690565b336117c36117ab565b6001600160a01b031614806117dc57506117dc33611256565b6117f85760405162461bcd60e51b81526004016105f390612df7565b611803600182612b98565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b336118546117ab565b6001600160a01b0316148061186d575061186d33611256565b6118895760405162461bcd60e51b81526004016105f390612df7565b611894600782612b98565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b6118eb81610c93565b80156119885750806001600160a01b031663d202158d336040516020016119129190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611947929190612e95565b602060405180830381865afa158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119889190612ea3565b6119e25760405162461bcd60e51b815260206004820152602560248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365205360448201526432ba3a32b960d91b60648201526084016105f3565b60085460405163f898178960e01b81526001600160a01b039091169063f898178990610b69908590600401612de3565b33611a1b6117ab565b6001600160a01b03161480611a345750611a3433611256565b611a505760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac79190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b289190612e78565b6001600160a01b031663e36dce28826040518263ffffffff1660e01b81526004016107599190612de3565b611b5c816129c7565b8015611bf95750806001600160a01b031663d202158d33604051602001611b839190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611bb8929190612e95565b602060405180830381865afa158015611bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf99190612ea3565b611c155760405162461bcd60e51b81526004016105f390612f89565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8c9190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ced9190612e78565b6001600160a01b031663b93d28eb836040518263ffffffff1660e01b8152600401610b699190612de3565b611d2181611535565b8015611dbe5750806001600160a01b031663d202158d33604051602001611d489190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611d7d929190612e95565b602060405180830381865afa158015611d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbe9190612ea3565b611dda5760405162461bcd60e51b81526004016105f39061301d565b60085460405163cbf3f86160e01b81526001600160a01b039091169063cbf3f86190610b69908590600401612de3565b33611e136117ab565b6001600160a01b03161480611e2c5750611e2c33611256565b611e485760405162461bcd60e51b81526004016105f390612df7565b611e53600482612b98565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b33611eab6117ab565b6001600160a01b03161480611ec45750611ec433611256565b611ee05760405162461bcd60e51b81526004016105f390612df7565b6008546040516351411b3360e01b81526001600160a01b03909116906351411b3390610759908490600401612de3565b33611f196117ab565b6001600160a01b03161480611f325750611f3233611256565b611f4e5760405162461bcd60e51b81526004016105f390612df7565b611f59600682612b98565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b33611fb66117ab565b6001600160a01b03161480611fcf5750611fcf33611256565b611feb5760405162461bcd60e51b81526004016105f390612df7565b611ff6600282612b98565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b336120526117ab565b6001600160a01b0316148061206b575061206b33611256565b6120875760405162461bcd60e51b81526004016105f390612df7565b612092600382612b98565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b6120e981610ca0565b80156121865750806001600160a01b031663d202158d336040516020016121109190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401612145929190612e95565b602060405180830381865afa158015612162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121869190612ea3565b6121a25760405162461bcd60e51b81526004016105f390612f41565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122199190612e78565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190612e78565b6001600160a01b031663c7b22551836040518263ffffffff1660e01b8152600401610b6991815260200190565b336122b06117ab565b6001600160a01b031614806122c957506122c933611256565b6122e55760405162461bcd60e51b81526004016105f390612df7565b6122f06005826129d4565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b3361234b6117ab565b6001600160a01b03161480612364575061236433611256565b6123805760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f79190612e78565b6001600160a01b031663ce240d9c826040518263ffffffff1660e01b81526004016107599190612de3565b61242b81611535565b80156124c85750806001600160a01b031663d202158d336040516020016124529190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401612487929190612e95565b602060405180830381865afa1580156124a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c89190612ea3565b6124e45760405162461bcd60e51b81526004016105f39061301d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255b9190612e78565b6001600160a01b031663670af6a9836040518263ffffffff1660e01b8152600401610b699190612de3565b61258f81611535565b801561262c5750806001600160a01b031663d202158d336040516020016125b69190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b81526004016125eb929190612e95565b602060405180830381865afa158015612608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262c9190612ea3565b6126485760405162461bcd60e51b81526004016105f39061301d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561269b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bf9190612e78565b6001600160a01b031663e744d789836040518263ffffffff1660e01b8152600401610b699190612de3565b6126f2612ae9565b6001600160a01b0381166127575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f3565b61276081612b48565b50565b3361276c6117ab565b6001600160a01b03161480612785575061278533611256565b6127a15760405162461bcd60e51b81526004016105f390612df7565b6127ac600582612b98565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b612807816129c7565b80156128a45750806001600160a01b031663d202158d3360405160200161282e9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401612863929190612e95565b602060405180830381865afa158015612880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a49190612ea3565b6128c05760405162461bcd60e51b81526004016105f390612f89565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129379190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129989190612e78565b6001600160a01b0316639f63ea988585856040518463ffffffff1660e01b8152600401610fa593929190612fd3565b6000610673600683612a56565b6129de8282612a56565b612a345760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b60648201526084016105f3565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60006001600160a01b038216612ab95760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b60648201526084016105f3565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000600482106106735750503590565b33612af26117ab565b6001600160a01b0316146113125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612ba28282612a56565b15612bef5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650060448201526064016105f3565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b038116811461276057600080fd5b600060208284031215612c3b57600080fd5b8135612c4681612c14565b9392505050565b60008083601f840112612c5f57600080fd5b5081356001600160401b03811115612c7657600080fd5b602083019150836020828501011115612c8e57600080fd5b9250929050565b600080600060408486031215612caa57600080fd5b83356001600160401b03811115612cc057600080fd5b612ccc86828701612c4d565b9094509250506020840135612ce081612c14565b809150509250925092565b60008060408385031215612cfe57600080fd5b823591506020830135612d1081612c14565b809150509250929050565b60008060008060608587031215612d3157600080fd5b8435612d3c81612c14565b935060208501356001600160401b0380821115612d5857600080fd5b818701915087601f830112612d6c57600080fd5b813581811115612d7b57600080fd5b8860208260051b8501011115612d9057600080fd5b6020830195508094505050506040850135612daa81612c14565b939692955090935050565b60008060408385031215612dc857600080fd5b8235612dd381612c14565b91506020830135612d1081612c14565b6001600160a01b0391909116815260200190565b6020808252601990820152782937b6329d1029b2b73232b91034b9902727aa1020b236b4b760391b604082015260600190565b600060208083528351808285015260005b81811015612e5757858101830151858201604001528201612e3b565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612e8a57600080fd5b8151612c4681612c14565b918252602082015260400190565b600060208284031215612eb557600080fd5b81518015158114612c4657600080fd5b6020808252602d908201527f526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d60408201526c30ba34b7b71026b0b730b3b2b960991b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208082526028908201527f526f6c653a2053656e646572206973204e4f5420436c61696d526567697374726040820152673ca6b0b730b3b2b960c11b606082015260800190565b6020808252602a908201527f526f6c653a2053656e646572206973204e4f54204973737565727352656769736040820152693a393ca6b0b730b3b2b960b11b606082015260800190565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561300357600080fd5b8260051b8085606085013791909101606001949350505050565b6020808252602b908201527f526f6c653a2053656e646572206973204e4f542052656769737472792041646460408201526a3932b9b99029b2ba3a32b960a91b60608201526080019056fed211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803abfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489a264697066735822122006c87bbc3e8c66d93e867de002b3d2c8df078c1ee38f8b8c133260283812861064736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102255760003560e01c8063039ec2cd1461022a57806303ff50141461023f5780631096a7ec146102675780632447e50b1461027a578063256ccc071461028d57806328d7be34146102a05780632af70c30146102b35780632f56d91b146102c6578063309ff3d1146102d95780633ba7c75e146102ec5780633c734ce8146102ff578063405225541461031257806346b686f8146103255780634837b7971461033857806354b9797f1461034b5780635c5f20471461035e57806362cdd482146103715780636ff7bff714610384578063715018a614610397578063757d467f1461039f578063818ab8bd146103b257806382870937146103c557806385cef608146103d857806387cc060c146103eb578063882fc6ca146103fe5780638da5cb5b14610411578063934b2da41461042657806394e69f1b14610439578063951af88d1461044c57806399884aab1461045f5780639ce2d88e146104725780639d6de3bc14610485578063a66bcc1c14610498578063aa1cef56146104ab578063ac95fc91146104be578063ae5aaa3b146104d1578063ce4bdac7146104e4578063dd39042b146104f7578063e110255b1461050a578063e38123181461051d578063eeac6fe614610530578063f087249c14610543578063f2fde38b14610556578063faed696a14610569578063fc0c546a1461057c578063fc6de4b51461058f578063ff806311146105a2575b600080fd5b61023d610238366004612c29565b6105b5565b005b61025261024d366004612c29565b610666565b60405190151581526020015b60405180910390f35b61023d610275366004612c29565b610679565b610252610288366004612c29565b61078e565b61023d61029b366004612c29565b61079b565b61023d6102ae366004612c29565b610809565b61023d6102c1366004612c95565b610877565b61023d6102d4366004612ceb565b6109a2565b61023d6102e7366004612c95565b610b9f565b6102526102fa366004612c29565b610c93565b61025261030d366004612c29565b610ca0565b61023d610320366004612c29565b610cad565b61023d610333366004612c29565b610d44565b61023d610346366004612d1b565b610ddc565b61023d610359366004612c29565b610fdd565b61023d61036c366004612c95565b61106e565b61025261037f366004612c29565b611256565b61023d610392366004612c29565b611263565b61023d611300565b61023d6103ad366004612c29565b611314565b61023d6103c0366004612c29565b6113f4565b6102526103d3366004612c29565b611535565b61023d6103e6366004612c29565b611542565b61023d6103f9366004612db5565b611622565b61023d61040c366004612c29565b611714565b6104196117ab565b60405161025e9190612de3565b61023d610434366004612c29565b6117ba565b61023d610447366004612c29565b61184b565b61023d61045a366004612db5565b6118e2565b61023d61046d366004612c29565b611a12565b61023d610480366004612db5565b611b53565b61023d610493366004612db5565b611d18565b61023d6104a6366004612c29565b611e0a565b61023d6104b9366004612c29565b611ea2565b61023d6104cc366004612c29565b611f10565b61023d6104df366004612c29565b611fad565b61023d6104f2366004612c29565b612049565b61023d610505366004612ceb565b6120e0565b61023d610518366004612c29565b6122a7565b61023d61052b366004612c29565b612342565b61023d61053e366004612db5565b612422565b61023d610551366004612db5565b612586565b61023d610564366004612c29565b6126ea565b61023d610577366004612c29565b612763565b600854610419906001600160a01b031681565b61023d61059d366004612d1b565b6127fe565b6102526105b0366004612c29565b6129c7565b336105be6117ab565b6001600160a01b031614806105d757506105d733611256565b6105fc5760405162461bcd60e51b81526004016105f390612df7565b60405180910390fd5b6106076002826129d4565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b60405180910390a25050565b6000610673600483612a56565b92915050565b336106826117ab565b6001600160a01b0316148061069b575061069b33611256565b6106b75760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b0316636290865d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190612e78565b6001600160a01b0316637bcf0487826040518263ffffffff1660e01b81526004016107599190612de3565b600060405180830381600087803b15801561077357600080fd5b505af1158015610787573d6000803e3d6000fd5b5050505050565b6000610673600783612a56565b336107a46117ab565b6001600160a01b031614806107bd57506107bd33611256565b6107d95760405162461bcd60e51b81526004016105f390612df7565b600854604051630b422d8360e41b81526001600160a01b039091169063b422d83090610759908490600401612de3565b336108126117ab565b6001600160a01b0316148061082b575061082b33611256565b6108475760405162461bcd60e51b81526004016105f390612df7565b600854604051635dc7a3cb60e01b81526001600160a01b0390911690635dc7a3cb90610759908490600401612de3565b6108808161078e565b801561091d5750806001600160a01b031663d202158d336040516020016108a79190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b81526004016108dc929190612e95565b602060405180830381865afa1580156108f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091d9190612ea3565b6109395760405162461bcd60e51b81526004016105f390612ec5565b600854604051635c26412360e11b81526001600160a01b039091169063b84c82469061096b9086908690600401612f12565b600060405180830381600087803b15801561098557600080fd5b505af1158015610999573d6000803e3d6000fd5b50505050505050565b6109ab81610ca0565b8015610a485750806001600160a01b031663d202158d336040516020016109d29190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401610a07929190612e95565b602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190612ea3565b610a645760405162461bcd60e51b81526004016105f390612f41565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adb9190612e78565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c9190612e78565b6001600160a01b03166308297846836040518263ffffffff1660e01b8152600401610b6991815260200190565b600060405180830381600087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050505050565b610ba88161078e565b8015610c455750806001600160a01b031663d202158d33604051602001610bcf9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401610c04929190612e95565b602060405180830381865afa158015610c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c459190612ea3565b610c615760405162461bcd60e51b81526004016105f390612ec5565b60085460405163c47f002760e01b81526001600160a01b039091169063c47f00279061096b9086908690600401612f12565b6000610673600383612a56565b6000610673600583612a56565b33610cb66117ab565b6001600160a01b03161480610ccf5750610ccf33611256565b610ceb5760405162461bcd60e51b81526004016105f390612df7565b610cf66003826129d4565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b33610d4d6117ab565b6001600160a01b03161480610d665750610d6633611256565b610d825760405162461bcd60e51b81526004016105f390612df7565b610d8d6004826129d4565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b610de5816129c7565b8015610e825750806001600160a01b031663d202158d33604051602001610e0c9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401610e41929190612e95565b602060405180830381865afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e829190612ea3565b610e9e5760405162461bcd60e51b81526004016105f390612f89565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f769190612e78565b6001600160a01b03166304bc7e848585856040518463ffffffff1660e01b8152600401610fa593929190612fd3565b600060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b5050505050505050565b33610fe66117ab565b6001600160a01b03161480610fff5750610fff33611256565b61101b5760405162461bcd60e51b81526004016105f390612df7565b6110266001826129d4565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b61107781610666565b80156111145750806001600160a01b031663d202158d3360405160200161109e9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b81526004016110d3929190612e95565b602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190612ea3565b61116f5760405162461bcd60e51b815260206004820152602660248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365204d60448201526530b730b3b2b960d11b60648201526084016105f3565b60085460408051636290865d60e01b815290516000926001600160a01b031691636290865d9160048083019260209291908290030181865afa1580156111b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dd9190612e78565b90506040518385823760008085836000865af16111fe573d6000803e3d6000fd5b50806001600160a01b03167f5779a24d18a4639b1d59461e68c00fb0cd02533a4c5a6ff3ca6363e23e2fff566112348686612ad9565b6040516001600160e01b0319909116815260200160405180910390a250505050565b6000610673600183612a56565b3361126c6117ab565b6001600160a01b03161480611285575061128533611256565b6112a15760405162461bcd60e51b81526004016105f390612df7565b6112ac6006826129d4565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b611308612ae9565b6113126000612b48565b565b3361131d6117ab565b6001600160a01b03161480611336575061133633611256565b6113525760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c99190612e78565b6001600160a01b0316635e5741f3826040518263ffffffff1660e01b81526004016107599190612de3565b336113fd6117ab565b6001600160a01b03161480611416575061141633611256565b6114325760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a99190612e78565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a9190612e78565b6001600160a01b031663d5144472826040518263ffffffff1660e01b81526004016107599190612de3565b6000610673600283612a56565b3361154b6117ab565b6001600160a01b03161480611564575061156433611256565b6115805760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190612e78565b6001600160a01b03166350bc7bda826040518263ffffffff1660e01b81526004016107599190612de3565b61162b8161078e565b80156116c85750806001600160a01b031663d202158d336040516020016116529190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611687929190612e95565b602060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190612ea3565b6116e45760405162461bcd60e51b81526004016105f390612ec5565b600854604051633d1ddc5b60e01b81526001600160a01b0390911690633d1ddc5b90610b69908590600401612de3565b3361171d6117ab565b6001600160a01b03161480611736575061173633611256565b6117525760405162461bcd60e51b81526004016105f390612df7565b61175d6007826129d4565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b6000546001600160a01b031690565b336117c36117ab565b6001600160a01b031614806117dc57506117dc33611256565b6117f85760405162461bcd60e51b81526004016105f390612df7565b611803600182612b98565b604080518082018252600a81526927bbb732b920b236b4b760b11b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b336118546117ab565b6001600160a01b0316148061186d575061186d33611256565b6118895760405162461bcd60e51b81526004016105f390612df7565b611894600782612b98565b604080518082018252601081526f2a37b5b2b724b73337a6b0b730b3b2b960811b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b6118eb81610c93565b80156119885750806001600160a01b031663d202158d336040516020016119129190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611947929190612e95565b602060405180830381865afa158015611964573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119889190612ea3565b6119e25760405162461bcd60e51b815260206004820152602560248201527f526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365205360448201526432ba3a32b960d91b60648201526084016105f3565b60085460405163f898178960e01b81526001600160a01b039091169063f898178990610b69908590600401612de3565b33611a1b6117ab565b6001600160a01b03161480611a345750611a3433611256565b611a505760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac79190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b289190612e78565b6001600160a01b031663e36dce28826040518263ffffffff1660e01b81526004016107599190612de3565b611b5c816129c7565b8015611bf95750806001600160a01b031663d202158d33604051602001611b839190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611bb8929190612e95565b602060405180830381865afa158015611bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf99190612ea3565b611c155760405162461bcd60e51b81526004016105f390612f89565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8c9190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ced9190612e78565b6001600160a01b031663b93d28eb836040518263ffffffff1660e01b8152600401610b699190612de3565b611d2181611535565b8015611dbe5750806001600160a01b031663d202158d33604051602001611d489190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401611d7d929190612e95565b602060405180830381865afa158015611d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbe9190612ea3565b611dda5760405162461bcd60e51b81526004016105f39061301d565b60085460405163cbf3f86160e01b81526001600160a01b039091169063cbf3f86190610b69908590600401612de3565b33611e136117ab565b6001600160a01b03161480611e2c5750611e2c33611256565b611e485760405162461bcd60e51b81526004016105f390612df7565b611e53600482612b98565b604080518082018252601181527021b7b6b83634b0b731b2a6b0b730b3b2b960791b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b33611eab6117ab565b6001600160a01b03161480611ec45750611ec433611256565b611ee05760405162461bcd60e51b81526004016105f390612df7565b6008546040516351411b3360e01b81526001600160a01b03909116906351411b3390610759908490600401612de3565b33611f196117ab565b6001600160a01b03161480611f325750611f3233611256565b611f4e5760405162461bcd60e51b81526004016105f390612df7565b611f59600682612b98565b604080518082018252601681527524b9b9bab2b939a932b3b4b9ba393ca6b0b730b3b2b960511b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b33611fb66117ab565b6001600160a01b03161480611fcf5750611fcf33611256565b611feb5760405162461bcd60e51b81526004016105f390612df7565b611ff6600282612b98565b60408051808201825260158152742932b3b4b9ba393ca0b2323932b9b9a9b2ba3a32b960591b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b336120526117ab565b6001600160a01b0316148061206b575061206b33611256565b6120875760405162461bcd60e51b81526004016105f390612df7565b612092600382612b98565b604080518082018252601081526f21b7b6b83634b0b731b2a9b2ba3a32b960811b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b6120e981610ca0565b80156121865750806001600160a01b031663d202158d336040516020016121109190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401612145929190612e95565b602060405180830381865afa158015612162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121869190612ea3565b6121a25760405162461bcd60e51b81526004016105f390612f41565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122199190612e78565b6001600160a01b0316633b3e12f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190612e78565b6001600160a01b031663c7b22551836040518263ffffffff1660e01b8152600401610b6991815260200190565b336122b06117ab565b6001600160a01b031614806122c957506122c933611256565b6122e55760405162461bcd60e51b81526004016105f390612df7565b6122f06005826129d4565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130698339815191529061065a908490612e2a565b3361234b6117ab565b6001600160a01b03161480612364575061236433611256565b6123805760405162461bcd60e51b81526004016105f390612df7565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f79190612e78565b6001600160a01b031663ce240d9c826040518263ffffffff1660e01b81526004016107599190612de3565b61242b81611535565b80156124c85750806001600160a01b031663d202158d336040516020016124529190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401612487929190612e95565b602060405180830381865afa1580156124a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c89190612ea3565b6124e45760405162461bcd60e51b81526004016105f39061301d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255b9190612e78565b6001600160a01b031663670af6a9836040518263ffffffff1660e01b8152600401610b699190612de3565b61258f81611535565b801561262c5750806001600160a01b031663d202158d336040516020016125b69190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b81526004016125eb929190612e95565b602060405180830381865afa158015612608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262c9190612ea3565b6126485760405162461bcd60e51b81526004016105f39061301d565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561269b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bf9190612e78565b6001600160a01b031663e744d789836040518263ffffffff1660e01b8152600401610b699190612de3565b6126f2612ae9565b6001600160a01b0381166127575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f3565b61276081612b48565b50565b3361276c6117ab565b6001600160a01b03161480612785575061278533611256565b6127a15760405162461bcd60e51b81526004016105f390612df7565b6127ac600582612b98565b604080518082018252601481527321b630b4b6a932b3b4b9ba393ca6b0b730b3b2b960611b602082015290516001600160a01b038316906000805160206130898339815191529061065a908490612e2a565b612807816129c7565b80156128a45750806001600160a01b031663d202158d3360405160200161282e9190612de3565b6040516020818303038152906040528051906020012060026040518363ffffffff1660e01b8152600401612863929190612e95565b602060405180830381865afa158015612880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a49190612ea3565b6128c05760405162461bcd60e51b81526004016105f390612f89565b600860009054906101000a90046001600160a01b03166001600160a01b031663134e18f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129379190612e78565b6001600160a01b031663b4f3fcb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129989190612e78565b6001600160a01b0316639f63ea988585856040518463ffffffff1660e01b8152600401610fa593929190612fd3565b6000610673600683612a56565b6129de8282612a56565b612a345760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b60648201526084016105f3565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60006001600160a01b038216612ab95760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b60648201526084016105f3565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000600482106106735750503590565b33612af26117ab565b6001600160a01b0316146113125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105f3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612ba28282612a56565b15612bef5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650060448201526064016105f3565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b038116811461276057600080fd5b600060208284031215612c3b57600080fd5b8135612c4681612c14565b9392505050565b60008083601f840112612c5f57600080fd5b5081356001600160401b03811115612c7657600080fd5b602083019150836020828501011115612c8e57600080fd5b9250929050565b600080600060408486031215612caa57600080fd5b83356001600160401b03811115612cc057600080fd5b612ccc86828701612c4d565b9094509250506020840135612ce081612c14565b809150509250925092565b60008060408385031215612cfe57600080fd5b823591506020830135612d1081612c14565b809150509250929050565b60008060008060608587031215612d3157600080fd5b8435612d3c81612c14565b935060208501356001600160401b0380821115612d5857600080fd5b818701915087601f830112612d6c57600080fd5b813581811115612d7b57600080fd5b8860208260051b8501011115612d9057600080fd5b6020830195508094505050506040850135612daa81612c14565b939692955090935050565b60008060408385031215612dc857600080fd5b8235612dd381612c14565b91506020830135612d1081612c14565b6001600160a01b0391909116815260200190565b6020808252601990820152782937b6329d1029b2b73232b91034b9902727aa1020b236b4b760391b604082015260600190565b600060208083528351808285015260005b81811015612e5757858101830151858201604001528201612e3b565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612e8a57600080fd5b8151612c4681612c14565b918252602082015260400190565b600060208284031215612eb557600080fd5b81518015158114612c4657600080fd5b6020808252602d908201527f526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d60408201526c30ba34b7b71026b0b730b3b2b960991b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60208082526028908201527f526f6c653a2053656e646572206973204e4f5420436c61696d526567697374726040820152673ca6b0b730b3b2b960c11b606082015260800190565b6020808252602a908201527f526f6c653a2053656e646572206973204e4f54204973737565727352656769736040820152693a393ca6b0b730b3b2b960b11b606082015260800190565b6001600160a01b0384168152604060208201819052810182905260006001600160fb1b0383111561300357600080fd5b8260051b8085606085013791909101606001949350505050565b6020808252602b908201527f526f6c653a2053656e646572206973204e4f542052656769737472792041646460408201526a3932b9b99029b2ba3a32b960a91b60608201526080019056fed211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803abfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489a264697066735822122006c87bbc3e8c66d93e867de002b3d2c8df078c1ee38f8b8c133260283812861064736f6c63430008110033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:306:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "95:209:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "141:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "150:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "153:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "143:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "143:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "143:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "116:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "125:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "112:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "112:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "137:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "108:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "108:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "105:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "166:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "185:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "179:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "179:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "170:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "258:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "267:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "270:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "260:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "260:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "260:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "217:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "228:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "243:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "248:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "239:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "239:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "252:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "235:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "235:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "224:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "224:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "214:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "214:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "207:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "207:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "204:70:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "283:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "293:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "283:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "61:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "72:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "84:6:54",
                "type": ""
              }
            ],
            "src": "14:290:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:13181:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "59:86:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "123:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "132:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "135:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "125:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "125:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "125:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "82:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "93:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "108:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "113:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "104:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "104:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "117:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "100:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "100:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "89:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "89:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "79:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "79:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "72:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "72:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "69:70:54"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "48:5:54",
                "type": ""
              }
            ],
            "src": "14:131:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "220:177:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "266:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "275:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "278:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "268:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "268:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "268:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "241:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "250:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "237:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "237:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "262:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "233:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "233:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "230:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "291:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "317:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "304:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "304:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "295:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "361:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "336:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "336:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "336:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "376:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "386:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "376:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "186:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "197:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "209:6:54",
                "type": ""
              }
            ],
            "src": "150:247:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "497:92:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "507:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "519:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "530:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "515:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "515:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "507:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "549:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "574:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "567:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "567:14:54"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "560:6:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "560:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "542:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "542:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "542:41:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "466:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "477:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "488:4:54",
                "type": ""
              }
            ],
            "src": "402:187:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "667:275:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "716:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "725:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "728:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "718:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "718:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "718:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "695:6:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "703:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "691:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "691:17:54"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "710:3:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "687:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "687:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "680:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "680:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "677:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "741:30:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "764:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "751:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "751:20:54"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "741:6:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "814:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "823:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "826:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "816:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "816:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "816:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "786:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "802:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "806:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "798:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "798:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "810:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "794:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "794:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "783:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "783:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "780:50:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "839:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "855:6:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "863:4:54",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "851:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "851:17:54"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "839:8:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "920:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "929:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "932:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "922:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "922:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "922:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "891:6:54"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "899:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "887:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "887:19:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "908:4:54",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "883:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "883:30:54"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "915:3:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "880:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "880:39:54"
                  },
                  "nodeType": "YulIf",
                  "src": "877:59:54"
                }
              ]
            },
            "name": "abi_decode_string_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "630:6:54",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "638:3:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "646:8:54",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "656:6:54",
                "type": ""
              }
            ],
            "src": "594:348:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1072:439:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1118:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1127:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1130:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1120:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1120:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1120:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1093:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1102:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1089:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1089:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1114:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1085:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1085:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1082:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1143:37:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1170:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1157:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1157:23:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "1147:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1223:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1232:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1235:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1225:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1225:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1225:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1195:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1211:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1215:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "1207:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1207:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1219:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1203:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1203:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1192:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1192:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1189:50:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1248:85:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1305:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "1316:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1301:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1301:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "1325:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "1274:26:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1274:59:54"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "1252:8:54",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "1262:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1342:18:54",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "1352:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1342:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1369:18:54",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "1379:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1369:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1396:45:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1426:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1437:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1422:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1422:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1409:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1409:32:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1400:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1475:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1450:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1450:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1450:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1490:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1500:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "1490:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptrt_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1022:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1033:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1045:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1053:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "1061:6:54",
                "type": ""
              }
            ],
            "src": "947:564:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1621:228:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1667:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1676:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1679:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1669:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1669:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1669:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1642:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1651:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1638:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1638:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1663:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1634:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1634:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1631:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1692:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1715:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1702:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1702:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1692:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1734:45:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1764:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1775:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1760:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1760:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1747:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1747:32:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1738:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1813:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "1788:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1788:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1788:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1828:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1838:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1828:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1579:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1590:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1602:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1610:6:54",
                "type": ""
              }
            ],
            "src": "1516:333:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2032:752:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2078:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2087:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2090:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2080:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2080:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2080:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2053:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2062:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2049:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2049:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2074:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2045:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2045:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2042:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2103:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2129:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2116:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2116:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "2107:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2173:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2148:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2148:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2148:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2188:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "2198:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2188:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2212:46:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2243:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2254:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2239:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2239:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2226:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2226:32:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2216:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2267:28:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2285:2:54",
                            "type": "",
                            "value": "64"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2289:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2281:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2281:10:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2293:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "2277:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2277:18:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2271:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2322:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2331:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2334:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2324:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2324:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2324:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2310:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2318:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2307:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2307:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2304:34:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2347:32:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2361:9:54"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2372:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2357:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2357:22:54"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "2351:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2427:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2436:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2439:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2429:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2429:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2429:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "2406:2:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2410:4:54",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2402:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2402:13:54"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2417:7:54"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "2398:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2398:27:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2391:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2391:35:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2388:55:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2452:30:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "2479:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2466:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2466:16:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "2456:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2509:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2518:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2521:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2511:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2511:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2511:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2497:6:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2505:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2494:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2494:14:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2491:34:54"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2583:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2592:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2595:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2585:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2585:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2585:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "2548:2:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2556:1:54",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2559:6:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "2552:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2552:14:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2544:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2544:23:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2569:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2540:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2540:32:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2574:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2537:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2537:45:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2534:65:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2608:21:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "2622:2:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2626:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2618:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2618:11:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2608:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2638:16:54",
                  "value": {
                    "name": "length",
                    "nodeType": "YulIdentifier",
                    "src": "2648:6:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2638:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2663:47:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2695:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2706:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2691:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2691:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2678:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2678:32:54"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "2667:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "2744:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "2719:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2719:33:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2719:33:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2761:17:54",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "2771:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "2761:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IClaimIssuer_$1456t_array$_t_uint256_$dyn_calldata_ptrt_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1974:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1985:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1997:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2005:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2013:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "2021:6:54",
                "type": ""
              }
            ],
            "src": "1854:930:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2913:439:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2959:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2968:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2971:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2961:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2961:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2961:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2934:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2943:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2930:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2930:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2955:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2926:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2926:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2923:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2984:37:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3011:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2998:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2998:23:54"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2988:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3064:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3073:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3076:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3066:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3066:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3066:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3036:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3052:2:54",
                                "type": "",
                                "value": "64"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3056:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "3048:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3048:10:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3060:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3044:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3044:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3033:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3033:30:54"
                  },
                  "nodeType": "YulIf",
                  "src": "3030:50:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3089:85:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3146:9:54"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3157:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3142:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3142:22:54"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3166:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_string_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3115:26:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3115:59:54"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "3093:8:54",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "3103:8:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3183:18:54",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "3193:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3183:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3210:18:54",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "3220:8:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3210:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3237:45:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3267:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3278:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3263:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3263:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3250:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3250:32:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3241:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3316:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3291:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3291:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3291:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3331:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3341:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3331:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_calldata_ptrt_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2863:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2874:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2886:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2894:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2902:6:54",
                "type": ""
              }
            ],
            "src": "2789:563:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3462:301:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3508:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3517:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3520:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3510:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3510:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3510:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3483:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3492:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3479:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3479:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3504:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3475:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3475:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "3472:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3533:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3559:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3546:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3546:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3537:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3603:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3578:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3578:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3578:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3618:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3628:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3618:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3642:47:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3674:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3685:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3670:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3670:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3657:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3657:32:54"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "3646:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "3723:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3698:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3698:33:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3698:33:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3740:17:54",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "3750:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3740:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3420:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3431:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3443:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3451:6:54",
                "type": ""
              }
            ],
            "src": "3357:406:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3869:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3879:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3891:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3902:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3887:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3887:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3879:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3921:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "3936:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3952:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3957:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "3948:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3948:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3961:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "3944:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3944:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3932:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3932:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3914:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3914:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3914:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3838:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3849:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3860:4:54",
                "type": ""
              }
            ],
            "src": "3768:203:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4102:301:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4148:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4157:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4160:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4150:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4150:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4150:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4123:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4132:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4119:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4119:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4144:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4115:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4115:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "4112:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4173:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4199:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4186:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4186:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4177:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4243:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4218:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4218:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4218:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4258:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4268:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4258:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4282:47:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4314:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4325:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4310:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4310:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4297:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4297:32:54"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "4286:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "4363:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4338:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4338:33:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4338:33:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4380:17:54",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "4390:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4380:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IClaimIssuer_$1456t_contract$_IIdentity_$1743",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4060:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4071:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4083:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4091:6:54",
                "type": ""
              }
            ],
            "src": "3976:427:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4525:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4535:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4547:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4558:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4543:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4543:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4535:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4577:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "4592:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4608:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4613:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "4604:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4604:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4617:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "4600:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4600:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4588:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4588:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4570:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4570:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4570:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IToken_$12234__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4494:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4505:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4516:4:54",
                "type": ""
              }
            ],
            "src": "4408:219:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4806:175:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4823:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4834:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4816:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4816:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4816:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4857:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4868:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4853:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4853:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4873:2:54",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4846:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4846:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4846:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4896:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4907:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4892:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4892:18:54"
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f542041646d696e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4912:27:54",
                        "type": "",
                        "value": "Role: Sender is NOT Admin"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4885:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4885:55:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4885:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4949:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4961:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4972:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4957:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4957:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4949:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e0747ebade9609a75d2f7261d19516256a9edb89fa8d2c0d89fd74d44bfd7b24__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4783:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4797:4:54",
                "type": ""
              }
            ],
            "src": "4632:349:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5107:427:54",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5117:12:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5127:2:54",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5121:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5145:9:54"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5156:2:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5138:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5138:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5138:21:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5168:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5188:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5182:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5182:13:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "5172:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5215:9:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5226:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5211:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5211:18:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5231:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5204:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5204:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5204:34:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5247:10:54",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5256:1:54",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "5251:1:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5316:90:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "headStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "5345:9:54"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "5356:1:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "5341:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5341:17:54"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5360:2:54",
                                  "type": "",
                                  "value": "64"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "5337:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5337:26:54"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5379:6:54"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5387:1:54"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5375:3:54"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5375:14:54"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "5391:2:54"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "5371:3:54"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5371:23:54"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "5365:5:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5365:30:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "5330:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5330:66:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5330:66:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "5277:1:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5280:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "5274:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5274:13:54"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "5288:19:54",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5290:15:54",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "5299:1:54"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "5302:2:54"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5295:3:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5295:10:54"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "5290:1:54"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "5270:3:54",
                    "statements": []
                  },
                  "src": "5266:140:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "5430:9:54"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "5441:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "5426:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5426:22:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5450:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5422:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5422:31:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5455:1:54",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5415:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5415:42:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5415:42:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5466:62:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5482:9:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5501:6:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5509:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5497:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5497:15:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5518:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "5514:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5514:7:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "5493:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "5493:29:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5478:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5478:45:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5525:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5474:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5474:54:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5466:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5076:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5087:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5098:4:54",
                "type": ""
              }
            ],
            "src": "4986:548:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5640:170:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5686:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5695:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5698:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5688:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5688:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5688:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5661:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5670:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5657:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5657:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5682:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5653:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5653:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "5650:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5711:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5730:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5724:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5724:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "5715:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5774:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "5749:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5749:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5749:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5789:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "5799:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5789:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_ICompliance_$5596_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5606:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5617:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5629:6:54",
                "type": ""
              }
            ],
            "src": "5539:271:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5952:119:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5962:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5974:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5985:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5970:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5970:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5962:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6004:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "6015:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5997:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5997:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5997:25:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6042:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6053:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6038:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6038:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "6058:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6031:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6031:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6031:34:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_rational_2_by_1__to_t_bytes32_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5913:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5924:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5932:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5943:4:54",
                "type": ""
              }
            ],
            "src": "5815:256:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6154:199:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6200:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6209:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6212:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6202:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6202:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6202:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6175:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6184:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6171:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6171:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6196:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6167:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6167:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6164:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6225:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6244:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "6238:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6238:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "6229:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6307:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6316:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6319:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6309:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6309:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6309:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "6276:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6297:5:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6290:6:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6290:13:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "6283:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6283:21:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "6273:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6273:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6266:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6266:40:54"
                  },
                  "nodeType": "YulIf",
                  "src": "6263:60:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6332:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6342:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6332:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6120:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6131:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6143:6:54",
                "type": ""
              }
            ],
            "src": "6076:277:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6532:235:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6549:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6560:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6542:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6542:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6542:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6583:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6594:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6579:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6579:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6599:2:54",
                        "type": "",
                        "value": "45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6572:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6572:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6572:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6622:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6633:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6618:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6618:18:54"
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6638:34:54",
                        "type": "",
                        "value": "Role: Sender is NOT Token Inform"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6611:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6611:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6611:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6693:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6704:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6689:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6689:18:54"
                      },
                      {
                        "hexValue": "6174696f6e204d616e61676572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6709:15:54",
                        "type": "",
                        "value": "ation Manager"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6682:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6682:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6682:43:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6734:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6746:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6757:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6742:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6742:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6734:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6509:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6523:4:54",
                "type": ""
              }
            ],
            "src": "6358:409:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6903:259:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6920:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6931:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6913:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6913:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6913:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6954:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6965:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6950:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6950:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "6970:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6943:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6943:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6943:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7003:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7014:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6999:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6999:18:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "7019:6:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "7027:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "6986:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6986:48:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6986:48:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "7058:9:54"
                              },
                              {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "7069:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "7054:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7054:22:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7078:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7050:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7050:31:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7083:1:54",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7043:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7043:42:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7043:42:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7094:62:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7110:9:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7129:6:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7137:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7125:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7125:15:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7146:2:54",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "7142:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7142:7:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "7121:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7121:29:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7106:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7106:45:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7153:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7102:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7102:54:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7094:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6864:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6875:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6883:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6894:4:54",
                "type": ""
              }
            ],
            "src": "6772:390:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7341:230:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7358:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7369:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7351:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7351:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7351:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7392:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7403:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7388:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7388:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7408:2:54",
                        "type": "",
                        "value": "40"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7381:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7381:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7381:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7431:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7442:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7427:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7427:18:54"
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420436c61696d52656769737472",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7447:34:54",
                        "type": "",
                        "value": "Role: Sender is NOT ClaimRegistr"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7420:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7420:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7420:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7502:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7513:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7498:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7498:18:54"
                      },
                      {
                        "hexValue": "794d616e61676572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7518:10:54",
                        "type": "",
                        "value": "yManager"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7491:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7491:38:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7491:38:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7538:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7550:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7561:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7546:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7546:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7538:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e7e4489e6454b196d2e13650eaf0dbf52508d1518388bccb807dffebb5df19a6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7318:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7332:4:54",
                "type": ""
              }
            ],
            "src": "7167:404:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7683:170:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7729:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7738:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7741:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7731:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7731:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7731:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7704:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7713:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7700:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7700:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7725:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7696:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7696:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7693:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7754:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7773:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7767:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7767:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7758:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7817:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "7792:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7792:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7792:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7832:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "7842:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7832:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IIdentityRegistry_$6637_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7649:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7660:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7672:6:54",
                "type": ""
              }
            ],
            "src": "7576:277:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7968:170:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8014:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8023:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8026:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8016:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8016:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8016:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7989:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7998:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7985:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7985:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8010:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7981:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7981:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7978:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8039:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8058:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8052:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8052:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "8043:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8102:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "8077:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8077:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8077:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8117:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8127:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8117:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_IClaimTopicsRegistry_$6444_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7934:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7945:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7957:6:54",
                "type": ""
              }
            ],
            "src": "7858:280:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8244:76:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "8254:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8266:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8277:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8262:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8262:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8254:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8296:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "8307:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8289:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8289:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8289:25:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8213:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8224:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8235:4:54",
                "type": ""
              }
            ],
            "src": "8143:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8499:232:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8516:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8527:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8509:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8509:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8509:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8550:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8561:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8546:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8546:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8566:2:54",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8539:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8539:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8539:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8589:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8600:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8585:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8585:18:54"
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420497373756572735265676973",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8605:34:54",
                        "type": "",
                        "value": "Role: Sender is NOT IssuersRegis"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8578:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8578:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8578:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8660:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8671:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8656:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8656:18:54"
                      },
                      {
                        "hexValue": "7472794d616e61676572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "8676:12:54",
                        "type": "",
                        "value": "tryManager"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8649:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8649:40:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8649:40:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8698:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8710:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8721:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8706:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8706:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "8698:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8476:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "8490:4:54",
                "type": ""
              }
            ],
            "src": "8325:406:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8849:170:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8895:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8904:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "8907:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8897:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8897:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8897:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8870:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8879:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8866:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8866:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8891:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8862:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8862:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "8859:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8920:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8939:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8933:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8933:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "8924:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8983:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "8958:24:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8958:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8958:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8998:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "9008:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8998:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_contract$_ITrustedIssuersRegistry_$6856_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8815:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8826:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8838:6:54",
                "type": ""
              }
            ],
            "src": "8736:283:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9234:351:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9251:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "9266:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9282:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9287:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "9278:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9278:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9291:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "9274:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9274:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "9262:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9262:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9244:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9244:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9244:51:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9315:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9326:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9311:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9311:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9331:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9304:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9304:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9304:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9354:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9365:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9350:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9350:18:54"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "9370:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9343:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9343:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9343:34:54"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9421:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9430:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9433:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9423:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9423:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9423:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "9392:6:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9408:3:54",
                                "type": "",
                                "value": "251"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9413:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "9404:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "9404:11:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9417:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9400:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9400:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9389:2:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9389:31:54"
                  },
                  "nodeType": "YulIf",
                  "src": "9386:51:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9446:28:54",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9464:1:54",
                        "type": "",
                        "value": "5"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "9467:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "9460:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9460:14:54"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "9450:6:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9500:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9511:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9496:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9496:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "9516:6:54"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "9524:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "9483:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9483:48:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9483:48:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9540:39:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9556:9:54"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "9567:6:54"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9552:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9552:22:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9576:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9548:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9548:31:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9540:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IClaimIssuer_$1456_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9187:9:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9198:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9206:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9214:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9225:4:54",
                "type": ""
              }
            ],
            "src": "9024:561:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9764:228:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9781:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9792:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9774:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9774:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9774:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9815:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9826:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9811:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9811:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9831:2:54",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9804:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9804:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9804:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9854:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9865:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9850:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9850:18:54"
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365204d",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9870:34:54",
                        "type": "",
                        "value": "Role: Sender is NOT Compliance M"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9843:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9843:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9843:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9925:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9936:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9921:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9921:18:54"
                      },
                      {
                        "hexValue": "616e61676572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9941:8:54",
                        "type": "",
                        "value": "anager"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9914:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9914:36:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9914:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9959:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9971:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9982:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9967:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9967:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "9959:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_b285b7852006b068b7086b84800d3f6a9a5bef5a287e9c64e072dc1168937613__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9741:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "9755:4:54",
                "type": ""
              }
            ],
            "src": "9590:402:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10096:103:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10106:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10118:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10129:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10114:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10114:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10106:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10148:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "10163:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10175:3:54",
                                "type": "",
                                "value": "224"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10180:10:54",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "10171:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10171:20:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "10159:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10159:33:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10141:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10141:52:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10141:52:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10065:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10076:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10087:4:54",
                "type": ""
              }
            ],
            "src": "9997:202:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10378:227:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10395:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10406:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10388:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10388:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10388:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10429:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10440:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10425:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10425:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10445:2:54",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10418:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10418:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10418:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10468:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10479:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10464:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10464:18:54"
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420436f6d706c69616e63652053",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10484:34:54",
                        "type": "",
                        "value": "Role: Sender is NOT Compliance S"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10457:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10457:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10457:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10539:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10550:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10535:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10535:18:54"
                      },
                      {
                        "hexValue": "6574746572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10555:7:54",
                        "type": "",
                        "value": "etter"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10528:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10528:35:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10528:35:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10572:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10584:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10595:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10580:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10580:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10572:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a1ecde2814e226e76b1becf9e74df5f5ede14dd7fbfcb5ff15be14160dcf1430__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10355:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10369:4:54",
                "type": ""
              }
            ],
            "src": "10204:401:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10732:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10742:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10754:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10765:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10750:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10750:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "10742:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10784:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "10799:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10815:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10820:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "10811:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10811:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10824:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "10807:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10807:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "10795:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10795:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10777:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10777:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10777:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IClaimIssuer_$1456__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10701:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10712:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "10723:4:54",
                "type": ""
              }
            ],
            "src": "10610:224:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11013:233:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11030:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11041:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11023:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11023:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11023:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11064:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11075:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11060:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11060:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11080:2:54",
                        "type": "",
                        "value": "43"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11053:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11053:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11053:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11103:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11114:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11099:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11099:18:54"
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420526567697374727920416464",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11119:34:54",
                        "type": "",
                        "value": "Role: Sender is NOT Registry Add"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11092:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11092:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11092:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11174:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11185:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11170:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11170:18:54"
                      },
                      {
                        "hexValue": "7265737320536574746572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11190:13:54",
                        "type": "",
                        "value": "ress Setter"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11163:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11163:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11163:41:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11213:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11225:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11236:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11221:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11221:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11213:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10990:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11004:4:54",
                "type": ""
              }
            ],
            "src": "10839:407:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11425:228:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11442:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11453:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11435:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11435:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11435:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11476:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11487:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11472:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11472:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11492:2:54",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11465:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11465:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11465:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11515:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11526:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11511:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11511:18:54"
                      },
                      {
                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11531:34:54",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11504:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11504:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11504:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11586:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11597:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11582:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11582:18:54"
                      },
                      {
                        "hexValue": "646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11602:8:54",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11575:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11575:36:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11575:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11620:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11632:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11643:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11628:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11628:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "11620:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11402:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11416:4:54",
                "type": ""
              }
            ],
            "src": "11251:402:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11832:223:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11849:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11860:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11842:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11842:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11842:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11883:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11894:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11879:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11879:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11899:2:54",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11872:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11872:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11872:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11922:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11933:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11918:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11918:18:54"
                      },
                      {
                        "hexValue": "526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11938:34:54",
                        "type": "",
                        "value": "Roles: account does not have rol"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11911:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11911:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11911:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11993:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12004:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11989:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11989:18:54"
                      },
                      {
                        "hexValue": "65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12009:3:54",
                        "type": "",
                        "value": "e"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11982:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11982:31:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11982:31:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12022:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12034:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12045:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12030:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12030:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12022:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11809:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "11823:4:54",
                "type": ""
              }
            ],
            "src": "11658:397:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12234:224:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12251:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12262:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12244:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12244:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12244:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12285:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12296:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12281:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12281:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12301:2:54",
                        "type": "",
                        "value": "34"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12274:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12274:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12274:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12324:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12335:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12320:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12320:18:54"
                      },
                      {
                        "hexValue": "526f6c65733a206163636f756e7420697320746865207a65726f206164647265",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12340:34:54",
                        "type": "",
                        "value": "Roles: account is the zero addre"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12313:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12313:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12313:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12395:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12406:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12391:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12391:18:54"
                      },
                      {
                        "hexValue": "7373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12411:4:54",
                        "type": "",
                        "value": "ss"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12384:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12384:32:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12384:32:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12425:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12437:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12448:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12433:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12433:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12425:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12211:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12225:4:54",
                "type": ""
              }
            ],
            "src": "12060:398:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12637:182:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12654:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12665:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12647:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12647:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12647:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12688:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12699:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12684:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12684:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12704:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12677:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12677:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12677:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12727:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12738:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12723:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12723:18:54"
                      },
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12743:34:54",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12716:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12716:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12716:62:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12787:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12799:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12810:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12795:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12795:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "12787:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12614:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12628:4:54",
                "type": ""
              }
            ],
            "src": "12463:356:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12998:181:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13015:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13026:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13008:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13008:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13008:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13049:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13060:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13045:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13045:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13065:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13038:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13038:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13038:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13088:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13099:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13084:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13084:18:54"
                      },
                      {
                        "hexValue": "526f6c65733a206163636f756e7420616c72656164792068617320726f6c65",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "13104:33:54",
                        "type": "",
                        "value": "Roles: account already has role"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13077:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13077:61:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13077:61:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13147:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13159:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13170:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13155:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13155:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13147:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12975:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "12989:4:54",
                "type": ""
              }
            ],
            "src": "12824:355:54"
          }
        ]
      },
      "contents": "{\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    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\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_decode_string_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_calldata_ptrt_contract$_IIdentity_$1743(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_decode_tuple_t_uint256t_contract$_IIdentity_$1743(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_contract$_IClaimIssuer_$1456t_array$_t_uint256_$dyn_calldata_ptrt_contract$_IIdentity_$1743(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value3 := value_1\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_contract$_IIdentity_$1743(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_decode_tuple_t_addresst_contract$_IIdentity_$1743(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\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_decode_tuple_t_contract$_IClaimIssuer_$1456t_contract$_IIdentity_$1743(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_contract$_IToken_$12234__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_stringliteral_e0747ebade9609a75d2f7261d19516256a9edb89fa8d2c0d89fd74d44bfd7b24__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), \"Role: Sender is NOT Admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        mstore(add(add(headStart, length), 64), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_tuple_t_contract$_ICompliance_$5596_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_rational_2_by_1__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"Role: Sender is NOT Token Inform\")\n        mstore(add(headStart, 96), \"ation Manager\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), value1)\n        calldatacopy(add(headStart, 64), value0, value1)\n        mstore(add(add(headStart, value1), 64), 0)\n        tail := add(add(headStart, and(add(value1, 31), not(31))), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_e7e4489e6454b196d2e13650eaf0dbf52508d1518388bccb807dffebb5df19a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"Role: Sender is NOT ClaimRegistr\")\n        mstore(add(headStart, 96), \"yManager\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_contract$_IIdentityRegistry_$6637_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IClaimTopicsRegistry_$6444_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"Role: Sender is NOT IssuersRegis\")\n        mstore(add(headStart, 96), \"tryManager\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_contract$_ITrustedIssuersRegistry_$6856_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_contract$_IClaimIssuer_$1456_t_array$_t_uint256_$dyn_calldata_ptr__to_t_address_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), value2)\n        if gt(value2, sub(shl(251, 1), 1)) { revert(0, 0) }\n        let length := shl(5, value2)\n        calldatacopy(add(headStart, 96), value1, length)\n        tail := add(add(headStart, length), 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b285b7852006b068b7086b84800d3f6a9a5bef5a287e9c64e072dc1168937613__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Role: Sender is NOT Compliance M\")\n        mstore(add(headStart, 96), \"anager\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function abi_encode_tuple_t_stringliteral_a1ecde2814e226e76b1becf9e74df5f5ede14dd7fbfcb5ff15be14160dcf1430__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"Role: Sender is NOT Compliance S\")\n        mstore(add(headStart, 96), \"etter\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_contract$_IClaimIssuer_$1456__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_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"Role: Sender is NOT Registry Add\")\n        mstore(add(headStart, 96), \"ress Setter\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"Roles: account does not have rol\")\n        mstore(add(headStart, 96), \"e\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"Roles: account is the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"Roles: account already has role\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "1490:19451:47:-:0;;;2229:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:13;719:10:20;936:18:13;:32::i;:::-;2267:5:47;:22;;-1:-1:-1;;;;;;2267:22:47;-1:-1:-1;;;;;2267:22:47;;;;;;;;;;1490:19451;;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:290:54:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:54;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:54:o;:::-;1490:19451:47;;;;;;",
  "deployedSourceMap": "1490:19451:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2801:222:48;;;;;;:::i;:::-;;:::i;:::-;;3687:126;;;;;;:::i;:::-;;:::i;:::-;;;567:14:54;;560:22;542:41;;530:2;515:18;3687:126:48;;;;;;;;17522:173:47;;;;;;:::i;:::-;;:::i;5601:124:48:-;;;;;;:::i;:::-;;:::i;19258:126:47:-;;;;;;:::i;:::-;;:::i;19709:132::-;;;;;;:::i;:::-;;:::i;8161:332::-;;;;;;:::i;:::-;;:::i;15712:376::-;;;;;;:::i;:::-;;:::i;7357:324::-;;;;;;:::i;:::-;;:::i;3083:124:48:-;;;;;;:::i;:::-;;:::i;4305:132::-;;;;;;:::i;:::-;;:::i;3418:207::-;;;;;;:::i;:::-;;:::i;4027:210::-;;;;;;:::i;:::-;;:::i;13777:483:47:-;;;;;;:::i;:::-;;:::i;2182:189:48:-;;;;;;:::i;:::-;;:::i;4448:1402:47:-;;;;;;:::i;:::-;;:::i;1877:112:48:-;;;;;;:::i;:::-;;:::i;5316:225::-;;;;;;:::i;:::-;;:::i;1831:101:13:-;;;:::i;20766:173:47:-;;;;;;:::i;:::-;;:::i;18106:214::-;;;;;;:::i;:::-;;:::i;2441:134:48:-;;;;;;:::i;:::-;;:::i;20217:167:47:-;;;;;;:::i;:::-;;:::i;8983:346::-;;;;;;:::i;:::-;;:::i;5936:207:48:-;;;;;;:::i;:::-;;:::i;1201:85:13:-;;;:::i;:::-;;;;;;;:::i;1995:181:48:-;;;;;;:::i;:::-;;:::i;5731:199::-;;;;;;:::i;:::-;;:::i;3654:327:47:-;;;;;;:::i;:::-;;:::i;18732:207::-;;;;;;:::i;:::-;;:::i;12810:398::-;;;;;;:::i;:::-;;:::i;2801:362::-;;;;;;:::i;:::-;;:::i;3819:202:48:-;;;;;;:::i;:::-;;:::i;16425:150:47:-;;;;;;:::i;:::-;;:::i;5093:217:48:-;;;;;;:::i;:::-;;:::i;2581:214::-;;;;;;:::i;:::-;;:::i;3213:199::-;;;;;;:::i;:::-;;:::i;14798:370:47:-;;;;;;:::i;:::-;;:::i;4660:219:48:-;;;;;;:::i;:::-;;:::i;16969:191:47:-;;;;;;:::i;:::-;;:::i;9875:393::-;;;;;;:::i;:::-;;:::i;10820:405::-;;;;;;:::i;:::-;;:::i;2081:198:13:-;;;;;;:::i;:::-;;:::i;4443:211:48:-;;;;;;:::i;:::-;;:::i;1601:19:47:-;;;;;-1:-1:-1;;;;;1601:19:47;;;11780:469;;;;;;:::i;:::-;;:::i;4951:136:48:-;;;;;;:::i;:::-;;:::i;2801:222::-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;;;;;;;;;2883:37:::1;:22;2913:6:::0;2883:29:::1;:37::i;:::-;2930:45;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;2930:45:48::1;::::0;::::1;::::0;2990:26;;-1:-1:-1;;;;;2990:26:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;2990:26:48;::::1;::::0;2930:45;;2990:26:::1;:::i;:::-;;;;;;;;2873:150;2801:222:::0;:::o;3687:126::-;3753:4;3776:30;:18;3799:6;3776:22;:30::i;:::-;3769:37;3687:126;-1:-1:-1;;3687:126:48:o;17522:173:47:-;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;17621:5:47::1;;;;;;;;;-1:-1:-1::0;;;;;17621:5:47::1;-1:-1:-1::0;;;;;17621:16:47::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17621:56:47::1;;17678:9;17621:67;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17522:173:::0;:::o;5601:124:48:-;5666:4;5689:29;:17;5711:6;5689:21;:29::i;19258:126:47:-;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;19340:5:47::1;::::0;:37:::1;::::0;-1:-1:-1;;;19340:37:47;;-1:-1:-1;;;;;19340:5:47;;::::1;::::0;:29:::1;::::0;:37:::1;::::0;19370:6;;19340:37:::1;;;:::i;19709:132::-:0;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;19794:5:47::1;::::0;:40:::1;::::0;-1:-1:-1;;;19794:40:47;;-1:-1:-1;;;;;19794:5:47;;::::1;::::0;:32:::1;::::0;:40:::1;::::0;19827:6;;19794:40:::1;;;:::i;8161:332::-:0;8276:39;8303:10;8276:18;:39::i;:::-;:105;;;;;8319:10;-1:-1:-1;;;;;8319:24:47;;8365:10;8354:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;8344:33;;;;;;8379:1;8319:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8255:197;;;;-1:-1:-1;;;8255:197:47;;;;;;;:::i;:::-;8462:5;;:24;;-1:-1:-1;;;8462:24:47;;-1:-1:-1;;;;;8462:5:47;;;;:15;;:24;;8478:7;;;;8462:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8161:332;;;:::o;15712:376::-;15825:43;15856:10;15825:22;:43::i;:::-;:109;;;;;15872:10;-1:-1:-1;;;;;15872:24:47;;15918:10;15907:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;15897:33;;;;;;15932:1;15872:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15804:196;;;;-1:-1:-1;;;15804:196:47;;;;;;;:::i;:::-;16010:5;;;;;;;;;-1:-1:-1;;;;;16010:5:47;-1:-1:-1;;;;;16010:22:47;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16010:39:47;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16010:58:47;;16069:11;16010:71;;;;;;;;;;;;;8289:25:54;;8277:2;8262:18;;8143:177;16010:71:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15712:376;;:::o;7357:324::-;7468:39;7495:10;7468:18;:39::i;:::-;:105;;;;;7511:10;-1:-1:-1;;;;;7511:24:47;;7557:10;7546:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;7536:33;;;;;;7571:1;7511:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7447:197;;;;-1:-1:-1;;;7447:197:47;;;;;;;:::i;:::-;7654:5;;:20;;-1:-1:-1;;;7654:20:47;;-1:-1:-1;;;;;7654:5:47;;;;:13;;:20;;7668:5;;;;7654:20;;;:::i;3083:124:48:-;3148:4;3171:29;:17;3193:6;3171:21;:29::i;4305:132::-;4374:4;4397:33;:21;4423:6;4397:25;:33::i;3418:207::-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;3495:32:::1;:17;3520:6:::0;3495:24:::1;:32::i;:::-;3537:40;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;3537:40:48::1;::::0;::::1;::::0;3592:26;;-1:-1:-1;;;;;3592:26:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;3592:26:48;::::1;::::0;3537:40;;3592:26:::1;:::i;4027:210::-:0;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;4105:33:::1;:18;4131:6:::0;4105:25:::1;:33::i;:::-;4148:41;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;4148:41:48::1;::::0;::::1;::::0;4204:26;;-1:-1:-1;;;;;4204:26:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;4204:26:48;::::1;::::0;4148:41;;4204:26:::1;:::i;13777:483:47:-:0;13968:45;14001:10;13968:24;:45::i;:::-;:111;;;;;14017:10;-1:-1:-1;;;;;14017:24:47;;14063:10;14052:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;14042:33;;;;;;14077:1;14017:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13947:200;;;;-1:-1:-1;;;13947:200:47;;;;;;;:::i;:::-;14157:5;;;;;;;;;-1:-1:-1;;;;;14157:5:47;-1:-1:-1;;;;;14157:22:47;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14157:40:47;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14157:66:47;;14224:14;14240:12;;14157:96;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13777:483;;;;:::o;2182:189:48:-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;2253:26:::1;:11;2272:6:::0;2253:18:::1;:26::i;:::-;2289:34;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;2289:34:48::1;::::0;::::1;::::0;2338:26;;-1:-1:-1;;;;;2338:26:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;2338:26:48;::::1;::::0;2289:34;;2338:26:::1;:::i;4448:1402:47:-:0;4567:40;4595:10;4567:19;:40::i;:::-;:106;;;;;4611:10;-1:-1:-1;;;;;4611:24:47;;4657:10;4646:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;4636:33;;;;;;4671:1;4611:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4546:182;;;;-1:-1:-1;;;4546:182:47;;9792:2:54;4546:182:47;;;9774:21:54;9831:2;9811:18;;;9804:30;9870:34;9850:18;;;9843:62;-1:-1:-1;;;9921:18:54;;;9914:36;9967:19;;4546:182:47;9590:402:54;4546:182:47;4763:5;;:18;;;-1:-1:-1;;;4763:18:47;;;;4738:14;;-1:-1:-1;;;;;4763:5:47;;:16;;:18;;;;;;;;;;;;;;:5;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4738:44;;5267:4;5261:11;5334:15;5317;5298:17;5285:65;5593:1;5570;5533:15;5494:17;5471:1;5443:6;5416:5;5390:226;5363:397;;5677:16;5674:1;5671;5656:38;5725:16;5722:1;5715:27;5363:397;;5811:6;-1:-1:-1;;;;;5789:49:47;;5819:18;5828:8;;5819;:18::i;:::-;5789:49;;-1:-1:-1;;;;;;10159:33:54;;;10141:52;;10129:2;10114:18;5789:49:47;;;;;;;4536:1314;4448:1402;;;:::o;1877:112:48:-;1936:4;1959:23;:11;1975:6;1959:15;:23::i;5316:225::-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;5399:38:::1;:23;5430:6:::0;5399:30:::1;:38::i;:::-;5447:46;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;5447:46:48::1;::::0;::::1;::::0;5508:26;;-1:-1:-1;;;;;5508:26:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;5508:26:48;::::1;::::0;5447:46;;5508:26:::1;:::i;1831:101:13:-:0;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;20766:173:47:-;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;20862:5:47::1;;;;;;;;;-1:-1:-1::0;;;;;20862:5:47::1;-1:-1:-1::0;;;;;20862:22:47::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20862:62:47::1;;20925:6;20862:70;;;;;;;;;;;;;;;:::i;18106:214::-:0;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;18214:5:47::1;;;;;;;;;-1:-1:-1::0;;;;;18214:5:47::1;-1:-1:-1::0;;;;;18214:22:47::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18214:39:47::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18214:88:47::1;;18303:9;18214:99;;;;;;;;;;;;;;;:::i;2441:134:48:-:0;2511:4;2534:34;:22;2561:6;2534:26;:34::i;20217:167:47:-;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;20310:5:47::1;;;;;;;;;-1:-1:-1::0;;;;;20310:5:47::1;-1:-1:-1::0;;;;;20310:22:47::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20310:59:47::1;;20370:6;20310:67;;;;;;;;;;;;;;;:::i;8983:346::-:0;9101:39;9128:10;9101:18;:39::i;:::-;:105;;;;;9144:10;-1:-1:-1;;;;;9144:24:47;;9190:10;9179:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;9169:33;;;;;;9204:1;9144:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9080:197;;;;-1:-1:-1;;;9080:197:47;;;;;;;:::i;:::-;9287:5;;:35;;-1:-1:-1;;;9287:35:47;;-1:-1:-1;;;;;9287:5:47;;;;:18;;:35;;9306:15;;9287:35;;;:::i;5936:207:48:-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;6013:32:::1;:17;6038:6:::0;6013:24:::1;:32::i;:::-;6055:40;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;6055:40:48::1;::::0;::::1;::::0;6110:26;;-1:-1:-1;;;;;6110:26:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;6110:26:48;::::1;::::0;6055:40;;6110:26:::1;:::i;1201:85:13:-:0;1247:7;1273:6;-1:-1:-1;;;;;1273:6:13;;1201:85::o;1995:181:48:-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;2063:23:::1;:11;2079:6:::0;2063:15:::1;:23::i;:::-;2096:34;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;2096:34:48::1;::::0;::::1;::::0;2145:24;;-1:-1:-1;;;;;2145:24:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;2145:24:48;::::1;::::0;2096:34;;2145:24:::1;:::i;5731:199::-:0;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;5805:29:::1;:17;5827:6:::0;5805:21:::1;:29::i;:::-;5844:40;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;5844:40:48::1;::::0;::::1;::::0;5899:24;;-1:-1:-1;;;;;5899:24:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;5899:24:48;::::1;::::0;5844:40;;5899:24:::1;:::i;3654:327:47:-:0;3764:39;3791:10;3764:18;:39::i;:::-;:105;;;;;3807:10;-1:-1:-1;;;;;3807:24:47;;3853:10;3842:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;3832:33;;;;;;3867:1;3807:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3743:189;;;;-1:-1:-1;;;3743:189:47;;10406:2:54;3743:189:47;;;10388:21:54;10445:2;10425:18;;;10418:30;10484:34;10464:18;;;10457:62;-1:-1:-1;;;10535:18:54;;;10528:35;10580:19;;3743:189:47;10204:401:54;3743:189:47;3942:5;;:32;;-1:-1:-1;;;3942:32:47;;-1:-1:-1;;;;;3942:5:47;;;;:19;;:32;;3962:11;;3942:32;;;:::i;18732:207::-;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;18836:5:47::1;;;;;;;;;-1:-1:-1::0;;;;;18836:5:47::1;-1:-1:-1::0;;;;;18836:22:47::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18836:40:47::1;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18836:85:47::1;;18922:9;18836:96;;;;;;;;;;;;;;;:::i;12810:398::-:0;12934:45;12967:10;12934:24;:45::i;:::-;:111;;;;;12983:10;-1:-1:-1;;;;;12983:24:47;;13029:10;13018:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;13008:33;;;;;;13043:1;12983:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12913:200;;;;-1:-1:-1;;;12913:200:47;;;;;;;:::i;:::-;13123:5;;;;;;;;;-1:-1:-1;;;;;13123:5:47;-1:-1:-1;;;;;13123:22:47;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13123:40:47;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13123:62:47;;13186:14;13123:78;;;;;;;;;;;;;;;:::i;2801:362::-;2923:44;2955:10;2923:23;:44::i;:::-;:110;;;;;2971:10;-1:-1:-1;;;;;2971:24:47;;3017:10;3006:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;2996:33;;;;;;3031:1;2971:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2902:200;;;;-1:-1:-1;;;2902:200:47;;;;;;;:::i;:::-;3112:5;;:44;;-1:-1:-1;;;3112:44:47;;-1:-1:-1;;;;;3112:5:47;;;;:25;;:44;;3138:17;;3112:44;;;:::i;3819:202:48:-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;3894:30:::1;:18;3917:6:::0;3894:22:::1;:30::i;:::-;3934:41;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;3934:41:48::1;::::0;::::1;::::0;3990:24;;-1:-1:-1;;;;;3990:24:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;3990:24:48;::::1;::::0;3934:41;;3990:24:::1;:::i;16425:150:47:-:0;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;16519:5:47::1;::::0;:49:::1;::::0;-1:-1:-1;;;16519:49:47;;-1:-1:-1;;;;;16519:5:47;;::::1;::::0;:38:::1;::::0;:49:::1;::::0;16558:9;;16519:49:::1;;;:::i;5093:217:48:-:0;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;5173:35:::1;:23;5201:6:::0;5173:27:::1;:35::i;:::-;5218:46;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;5218:46:48::1;::::0;::::1;::::0;5279:24;;-1:-1:-1;;;;;5279:24:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;5279:24:48;::::1;::::0;5218:46;;5279:24:::1;:::i;2581:214::-:0;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;2660:34:::1;:22;2687:6:::0;2660:26:::1;:34::i;:::-;2704:45;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;2704:45:48::1;::::0;::::1;::::0;2764:24;;-1:-1:-1;;;;;2764:24:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;2764:24:48;::::1;::::0;2704:45;;2764:24:::1;:::i;3213:199::-:0;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;3287:29:::1;:17;3309:6:::0;3287:21:::1;:29::i;:::-;3326:40;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;3326:40:48::1;::::0;::::1;::::0;3381:24;;-1:-1:-1;;;;;3381:24:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;3381:24:48;::::1;::::0;3326:40;;3381:24:::1;:::i;14798:370:47:-:0;14908:43;14939:10;14908:22;:43::i;:::-;:109;;;;;14955:10;-1:-1:-1;;;;;14955:24:47;;15001:10;14990:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;14980:33;;;;;;15015:1;14955:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14887:196;;;;-1:-1:-1;;;14887:196:47;;;;;;;:::i;:::-;15093:5;;;;;;;;;-1:-1:-1;;;;;15093:5:47;-1:-1:-1;;;;;15093:22:47;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15093:39:47;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15093:55:47;;15149:11;15093:68;;;;;;;;;;;;;8289:25:54;;8277:2;8262:18;;8143:177;4660:219:48;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;4741:36:::1;:21;4770:6:::0;4741:28:::1;:36::i;:::-;4787:44;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;4787:44:48::1;::::0;::::1;::::0;4846:26;;-1:-1:-1;;;;;4846:26:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;4846:26:48;::::1;::::0;4787:44;;4846:26:::1;:::i;16969:191:47:-:0;1741:10:48;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;17074:5:47::1;;;;;;;;;-1:-1:-1::0;;;;;17074:5:47::1;-1:-1:-1::0;;;;;17074:22:47::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17074:68:47::1;;17143:9;17074:79;;;;;;;;;;;;;;;:::i;9875:393::-:0;10003:44;10035:10;10003:23;:44::i;:::-;:110;;;;;10051:10;-1:-1:-1;;;;;10051:24:47;;10097:10;10086:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;10076:33;;;;;;10111:1;10051:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9982:200;;;;-1:-1:-1;;;9982:200:47;;;;;;;:::i;:::-;10192:5;;;;;;;;;-1:-1:-1;;;;;10192:5:47;-1:-1:-1;;;;;10192:22:47;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10192:47:47;;10240:20;10192:69;;;;;;;;;;;;;;;:::i;10820:405::-;10954:44;10986:10;10954:23;:44::i;:::-;:110;;;;;11002:10;-1:-1:-1;;;;;11002:24:47;;11048:10;11037:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;11027:33;;;;;;11062:1;11002:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10933:200;;;;-1:-1:-1;;;10933:200:47;;;;;;;:::i;:::-;11143:5;;;;;;;;;-1:-1:-1;;;;;11143:5:47;-1:-1:-1;;;;;11143:22:47;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11143:50:47;;11194:23;11143:75;;;;;;;;;;;;;;;:::i;2081:198:13:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:13;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:13;;11453:2:54;2161:73:13::1;::::0;::::1;11435:21:54::0;11492:2;11472:18;;;11465:30;11531:34;11511:18;;;11504:62;-1:-1:-1;;;11582:18:54;;;11575:36;11628:19;;2161:73:13::1;11251:402:54::0;2161:73:13::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;4443:211:48:-;1741:10;1730:7;:5;:7::i;:::-;-1:-1:-1;;;;;1730:21:48;;:51;;;-1:-1:-1;1755:26:48;719:10:20;1877:112:48;:::i;1755:26::-;1722:89;;;;-1:-1:-1;;;1722:89:48;;;;;;;:::i;:::-;4521:33:::1;:21;4547:6:::0;4521:25:::1;:33::i;:::-;4564:44;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;4564:44:48::1;::::0;::::1;::::0;4623:24;;-1:-1:-1;;;;;4623:24:48;::::1;::::0;-1:-1:-1;;;;;;;;;;;4623:24:48;::::1;::::0;4564:44;;4623:24:::1;:::i;11780:469:47:-:0;11964:45;11997:10;11964:24;:45::i;:::-;:111;;;;;12013:10;-1:-1:-1;;;;;12013:24:47;;12059:10;12048:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;12038:33;;;;;;12073:1;12013:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11943:200;;;;-1:-1:-1;;;11943:200:47;;;;;;;:::i;:::-;12153:5;;;;;;;;;-1:-1:-1;;;;;12153:5:47;-1:-1:-1;;;;;12153:22:47;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12153:40:47;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12153:59:47;;12213:14;12229:12;;12153:89;;;;;;;;;;;;;;;;;:::i;4951:136:48:-;5022:4;5045:35;:23;5073:6;5045:27;:35::i;546:180:50:-;625:18;629:4;635:7;625:3;:18::i;:::-;617:64;;;;-1:-1:-1;;;617:64:50;;11860:2:54;617:64:50;;;11842:21:54;11899:2;11879:18;;;11872:30;11938:34;11918:18;;;11911:62;-1:-1:-1;;;11989:18:54;;;11982:31;12030:19;;617:64:50;11658:397:54;617:64:50;-1:-1:-1;;;;;691:20:50;714:5;691:20;;;;;;;;;;;:28;;-1:-1:-1;;691:28:50;;;546:180::o;815:200::-;887:4;-1:-1:-1;;;;;911:21:50;;903:68;;;;-1:-1:-1;;;903:68:50;;12262:2:54;903:68:50;;;12244:21:54;12301:2;12281:18;;;12274:30;12340:34;12320:18;;;12313:62;-1:-1:-1;;;12391:18:54;;;12384:32;12433:19;;903:68:50;12060:398:54;903:68:50;-1:-1:-1;;;;;;988:20:50;:11;:20;;;;;;;;;;;;;;;815:200::o;6078:803:47:-;6144:13;6192:1;6173:20;;6169:702;;-1:-1:-1;;6810:29:47;;6078:803::o;1359:130:13:-;719:10:20;1422:7:13;:5;:7::i;:::-;-1:-1:-1;;;;;1422:23:13;;1414:68;;;;-1:-1:-1;;;1414:68:13;;12665:2:54;1414:68:13;;;12647:21:54;;;12684:18;;;12677:30;12743:34;12723:18;;;12716:62;12795:18;;1414:68:13;12463:356:54;2433:187:13;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:13;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;296:175:50:-;373:18;377:4;383:7;373:3;:18::i;:::-;372:19;364:63;;;;-1:-1:-1;;;364:63:50;;13026:2:54;364:63:50;;;13008:21:54;13065:2;13045:18;;;13038:30;13104:33;13084:18;;;13077:61;13155:18;;364:63:50;12824:355:54;364:63:50;-1:-1:-1;;;;;437:20:50;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;437:27:50;460:4;437:27;;;296:175::o;14:131:54:-;-1:-1:-1;;;;;89:31:54;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:54:o;594:348::-;646:8;656:6;710:3;703:4;695:6;691:17;687:27;677:55;;728:1;725;718:12;677:55;-1:-1:-1;751:20:54;;-1:-1:-1;;;;;783:30:54;;780:50;;;826:1;823;816:12;780:50;863:4;855:6;851:17;839:29;;915:3;908:4;899:6;891;887:19;883:30;880:39;877:59;;;932:1;929;922:12;877:59;594:348;;;;;:::o;947:564::-;1045:6;1053;1061;1114:2;1102:9;1093:7;1089:23;1085:32;1082:52;;;1130:1;1127;1120:12;1082:52;1157:23;;-1:-1:-1;;;;;1192:30:54;;1189:50;;;1235:1;1232;1225:12;1189:50;1274:59;1325:7;1316:6;1305:9;1301:22;1274:59;:::i;:::-;1352:8;;-1:-1:-1;1248:85:54;-1:-1:-1;;1437:2:54;1422:18;;1409:32;1450:31;1409:32;1450:31;:::i;:::-;1500:5;1490:15;;;947:564;;;;;:::o;1516:333::-;1602:6;1610;1663:2;1651:9;1642:7;1638:23;1634:32;1631:52;;;1679:1;1676;1669:12;1631:52;1715:9;1702:23;1692:33;;1775:2;1764:9;1760:18;1747:32;1788:31;1813:5;1788:31;:::i;:::-;1838:5;1828:15;;;1516:333;;;;;:::o;1854:930::-;1997:6;2005;2013;2021;2074:2;2062:9;2053:7;2049:23;2045:32;2042:52;;;2090:1;2087;2080:12;2042:52;2129:9;2116:23;2148:31;2173:5;2148:31;:::i;:::-;2198:5;-1:-1:-1;2254:2:54;2239:18;;2226:32;-1:-1:-1;;;;;2307:14:54;;;2304:34;;;2334:1;2331;2324:12;2304:34;2372:6;2361:9;2357:22;2347:32;;2417:7;2410:4;2406:2;2402:13;2398:27;2388:55;;2439:1;2436;2429:12;2388:55;2479:2;2466:16;2505:2;2497:6;2494:14;2491:34;;;2521:1;2518;2511:12;2491:34;2574:7;2569:2;2559:6;2556:1;2552:14;2548:2;2544:23;2540:32;2537:45;2534:65;;;2595:1;2592;2585:12;2534:65;2626:2;2622;2618:11;2608:21;;2648:6;2638:16;;;;;2706:2;2695:9;2691:18;2678:32;2719:33;2744:7;2719:33;:::i;:::-;1854:930;;;;-1:-1:-1;1854:930:54;;-1:-1:-1;;1854:930:54:o;3357:406::-;3443:6;3451;3504:2;3492:9;3483:7;3479:23;3475:32;3472:52;;;3520:1;3517;3510:12;3472:52;3559:9;3546:23;3578:31;3603:5;3578:31;:::i;:::-;3628:5;-1:-1:-1;3685:2:54;3670:18;;3657:32;3698:33;3657:32;3698:33;:::i;3768:203::-;-1:-1:-1;;;;;3932:32:54;;;;3914:51;;3902:2;3887:18;;3768:203::o;4632:349::-;4834:2;4816:21;;;4873:2;4853:18;;;4846:30;-1:-1:-1;;;4907:2:54;4892:18;;4885:55;4972:2;4957:18;;4632:349::o;4986:548::-;5098:4;5127:2;5156;5145:9;5138:21;5188:6;5182:13;5231:6;5226:2;5215:9;5211:18;5204:34;5256:1;5266:140;5280:6;5277:1;5274:13;5266:140;;;5375:14;;;5371:23;;5365:30;5341:17;;;5360:2;5337:26;5330:66;5295:10;;5266:140;;;5270:3;5455:1;5450:2;5441:6;5430:9;5426:22;5422:31;5415:42;5525:2;5518;5514:7;5509:2;5501:6;5497:15;5493:29;5482:9;5478:45;5474:54;5466:62;;;;4986:548;;;;:::o;5539:271::-;5629:6;5682:2;5670:9;5661:7;5657:23;5653:32;5650:52;;;5698:1;5695;5688:12;5650:52;5730:9;5724:16;5749:31;5774:5;5749:31;:::i;5815:256::-;5997:25;;;6053:2;6038:18;;6031:34;5985:2;5970:18;;5815:256::o;6076:277::-;6143:6;6196:2;6184:9;6175:7;6171:23;6167:32;6164:52;;;6212:1;6209;6202:12;6164:52;6244:9;6238:16;6297:5;6290:13;6283:21;6276:5;6273:32;6263:60;;6319:1;6316;6309:12;6358:409;6560:2;6542:21;;;6599:2;6579:18;;;6572:30;6638:34;6633:2;6618:18;;6611:62;-1:-1:-1;;;6704:2:54;6689:18;;6682:43;6757:3;6742:19;;6358:409::o;6772:390::-;6931:2;6920:9;6913:21;6970:6;6965:2;6954:9;6950:18;6943:34;7027:6;7019;7014:2;7003:9;6999:18;6986:48;7083:1;7054:22;;;7078:2;7050:31;;;7043:42;;;;7146:2;7125:15;;;-1:-1:-1;;7121:29:54;7106:45;7102:54;;6772:390;-1:-1:-1;6772:390:54:o;7167:404::-;7369:2;7351:21;;;7408:2;7388:18;;;7381:30;7447:34;7442:2;7427:18;;7420:62;-1:-1:-1;;;7513:2:54;7498:18;;7491:38;7561:3;7546:19;;7167:404::o;8325:406::-;8527:2;8509:21;;;8566:2;8546:18;;;8539:30;8605:34;8600:2;8585:18;;8578:62;-1:-1:-1;;;8671:2:54;8656:18;;8649:40;8721:3;8706:19;;8325:406::o;9024:561::-;-1:-1:-1;;;;;9262:32:54;;9244:51;;9331:2;9326;9311:18;;9304:30;;;9350:18;;9343:34;;;-1:-1:-1;;;;;;9389:31:54;;9386:51;;;9433:1;9430;9423:12;9386:51;9467:6;9464:1;9460:14;9524:6;9516;9511:2;9500:9;9496:18;9483:48;9552:22;;;;9576:2;9548:31;;9024:561;-1:-1:-1;;;;9024:561:54:o;10839:407::-;11041:2;11023:21;;;11080:2;11060:18;;;11053:30;11119:34;11114:2;11099:18;;11092:62;-1:-1:-1;;;11185:2:54;11170:18;;11163:41;11236:3;11221:19;;10839:407::o",
  "source": "// SPDX-License-Identifier: GPL-3.0\n/**\n *     NOTICE\n *\n *     The T-REX software is licensed under a proprietary license or the GPL v.3.\n *     If you choose to receive it under the GPL v.3 license, the following applies:\n *     T-REX is a suite of smart contracts developed by Tokeny to manage and transfer financial assets on the ethereum blockchain\n *\n *     Copyright (C) 2021, Tokeny sàrl.\n *\n *     This program is free software: you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation, either version 3 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n\npragma solidity ^0.8.0;\n\nimport '../token/IToken.sol';\nimport '../registry/IIdentityRegistry.sol';\nimport '../registry/ITrustedIssuersRegistry.sol';\nimport '../registry/IClaimTopicsRegistry.sol';\nimport '../compliance/ICompliance.sol';\nimport './OwnerRoles.sol';\nimport '@onchain-id/solidity/contracts/interface/IIdentity.sol';\nimport '@onchain-id/solidity/contracts/interface/IClaimIssuer.sol';\n\ncontract OwnerManager is OwnerRoles {\n    /// @dev the token that is managed by this OwnerManager Contract\n    IToken public token;\n\n    /// @dev Event emitted for each executed interaction with the compliance contract.\n    ///\n    /// For gas efficiency, only the interaction calldata selector (first 4\n    /// bytes) is included in the event. For interactions without calldata or\n    /// whose calldata is shorter than 4 bytes, the selector will be `0`.\n    event ComplianceInteraction(address indexed target, bytes4 selector);\n\n    /**\n     *  @dev the constructor initiates the OwnerManager contract\n     *  and sets msg.sender as owner of the contract\n     *  @param _token the token managed by this OwnerManager contract\n     */\n    constructor(address _token) {\n        token = IToken(_token);\n    }\n\n    /**\n     *  @dev calls the `setIdentityRegistry` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-setIdentityRegistry}.\n     *  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callSetIdentityRegistry(address _identityRegistry, IIdentity _onchainID) external {\n        require(\n            isRegistryAddressSetter(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Registry Address Setter'\n        );\n        token.setIdentityRegistry(_identityRegistry);\n    }\n\n    /**\n     *  @dev calls the `setCompliance` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-setCompliance}.\n     *  Requires that `_onchainID` is set as ComplianceSetter on the OwnerManager contract\n     *  Requires that msg.sender is a MANAGEMENT KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callSetCompliance(address _compliance, IIdentity _onchainID) external {\n        require(\n            isComplianceSetter(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Compliance Setter'\n        );\n        token.setCompliance(_compliance);\n    }\n\n    /**\n     *  @dev calls any onlyOwner function available on the compliance contract\n     *  OwnerManager has to be set as owner on the compliance smart contract to process this function\n     *  Requires that `_onchainID` is set as ComplianceManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callComplianceFunction(bytes calldata callData, IIdentity _onchainID) external {\n        require(\n            isComplianceManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Compliance Manager');\n        address target = address(token.compliance());\n\n        // NOTE: Use assembly to call the interaction instead of a low level\n        // call for two reasons:\n        // - We don't want to copy the return data, since we discard it for\n        // interactions.\n        // - Solidity will under certain conditions generate code to copy input\n        // calldata twice to memory (the second being a \"memcopy loop\").\n        // solhint-disable-next-line no-inline-assembly\n        assembly {\n            let freeMemoryPointer := mload(0x40)\n            calldatacopy(freeMemoryPointer, callData.offset, callData.length)\n            if iszero(\n                call(\n                    gas(),\n                    target,\n                    0,\n                    freeMemoryPointer,\n                    callData.length,\n                    0,\n                    0\n                    ))\n                {\n                    returndatacopy(0, 0, returndatasize())\n                    revert(0, returndatasize())\n                }\n            }\n\n        emit ComplianceInteraction(target, selector(callData));\n\n        }\n\n    /// @dev Extracts the Solidity ABI selector for the specified interaction.\n    /// @param callData Interaction data.\n    /// @return result The 4 byte function selector of the call encoded in\n    /// this interaction.\n    function selector(bytes calldata callData) internal pure returns (bytes4 result) {\n        if (callData.length >= 4) {\n        // NOTE: Read the first word of the interaction's calldata. The\n        // value does not need to be shifted since `bytesN` values are left\n        // aligned, and the value does not need to be masked since masking\n        // occurs when the value is accessed and not stored:\n        // <https://docs.soliditylang.org/en/v0.7.6/abi-spec.html#encoding-of-indexed-event-parameters>\n        // <https://docs.soliditylang.org/en/v0.7.6/assembly.html#access-to-external-variables-functions-and-libraries>\n        // solhint-disable-next-line no-inline-assembly\n            assembly {\n                result := calldataload(callData.offset)\n                }\n            }\n        }\n\n    /**\n     *  @dev calls the `setName` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-setName}.\n     *  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callSetTokenName(string calldata _name, IIdentity _onchainID) external {\n        require(\n            isTokenInfoManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Token Information Manager'\n        );\n        token.setName(_name);\n    }\n\n    /**\n     *  @dev calls the `setSymbol` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-setSymbol}.\n     *  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callSetTokenSymbol(string calldata _symbol, IIdentity _onchainID) external {\n        require(\n            isTokenInfoManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Token Information Manager'\n        );\n        token.setSymbol(_symbol);\n    }\n\n    /**\n     *  @dev calls the `setOnchainID` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-setOnchainID}.\n     *  Requires that `_tokenOnchainID` is set as TokenInfoManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callSetTokenOnchainID(address _tokenOnchainID, IIdentity _onchainID) external {\n        require(\n            isTokenInfoManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Token Information Manager'\n        );\n        token.setOnchainID(_tokenOnchainID);\n    }\n\n    /**\n     *  @dev calls the `setClaimTopicsRegistry` function on the Identity Registry contract\n     *  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n     *  See {IIdentityRegistry-setClaimTopicsRegistry}.\n     *  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callSetClaimTopicsRegistry(address _claimTopicsRegistry, IIdentity _onchainID) external {\n        require(\n            isRegistryAddressSetter(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Registry Address Setter'\n        );\n        token.identityRegistry().setClaimTopicsRegistry(_claimTopicsRegistry);\n    }\n\n    /**\n     *  @dev calls the `setTrustedIssuersRegistry` function on the Identity Registry contract\n     *  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n     *  See {IIdentityRegistry-setTrustedIssuersRegistry}.\n     *  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callSetTrustedIssuersRegistry(address _trustedIssuersRegistry, IIdentity _onchainID) external {\n        require(\n            isRegistryAddressSetter(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT Registry Address Setter'\n        );\n        token.identityRegistry().setTrustedIssuersRegistry(_trustedIssuersRegistry);\n    }\n\n    /**\n     *  @dev calls the `addTrustedIssuer` function on the Trusted Issuers Registry contract\n     *  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function\n     *  See {ITrustedIssuersRegistry-addTrustedIssuer}.\n     *  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callAddTrustedIssuer(\n        IClaimIssuer _trustedIssuer,\n        uint256[] calldata _claimTopics,\n        IIdentity _onchainID\n    ) external {\n        require(\n            isIssuersRegistryManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT IssuersRegistryManager'\n        );\n        token.identityRegistry().issuersRegistry().addTrustedIssuer(_trustedIssuer, _claimTopics);\n    }\n\n    /**\n     *  @dev calls the `removeTrustedIssuer` function on the Trusted Issuers Registry contract\n     *  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function\n     *  See {ITrustedIssuersRegistry-removeTrustedIssuer}.\n     *  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callRemoveTrustedIssuer(IClaimIssuer _trustedIssuer, IIdentity _onchainID) external {\n        require(\n            isIssuersRegistryManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT IssuersRegistryManager'\n        );\n        token.identityRegistry().issuersRegistry().removeTrustedIssuer(_trustedIssuer);\n    }\n\n    /**\n     *  @dev calls the `updateIssuerClaimTopics` function on the Trusted Issuers Registry contract\n     *  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function\n     *  See {ITrustedIssuersRegistry-updateIssuerClaimTopics}.\n     *  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callUpdateIssuerClaimTopics(\n        IClaimIssuer _trustedIssuer,\n        uint256[] calldata _claimTopics,\n        IIdentity _onchainID\n    ) external {\n        require(\n            isIssuersRegistryManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT IssuersRegistryManager'\n        );\n        token.identityRegistry().issuersRegistry().updateIssuerClaimTopics(_trustedIssuer, _claimTopics);\n    }\n\n    /**\n     *  @dev calls the `addClaimTopic` function on the Claim Topics Registry contract\n     *  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function\n     *  See {IClaimTopicsRegistry-addClaimTopic}.\n     *  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callAddClaimTopic(uint256 _claimTopic, IIdentity _onchainID) external {\n        require(\n            isClaimRegistryManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT ClaimRegistryManager'\n        );\n        token.identityRegistry().topicsRegistry().addClaimTopic(_claimTopic);\n    }\n\n    /**\n     *  @dev calls the `removeClaimTopic` function on the Claim Topics Registry contract\n     *  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function\n     *  See {IClaimTopicsRegistry-removeClaimTopic}.\n     *  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract\n     *  Requires that msg.sender is an ACTION KEY on `_onchainID`\n     *  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\"\n     */\n    function callRemoveClaimTopic(uint256 _claimTopic, IIdentity _onchainID) external {\n        require(\n            isClaimRegistryManager(address(_onchainID)) && _onchainID.keyHasPurpose(keccak256(abi.encode(msg.sender)), 2),\n            'Role: Sender is NOT ClaimRegistryManager'\n        );\n        token.identityRegistry().topicsRegistry().removeClaimTopic(_claimTopic);\n    }\n\n    /**\n     *  @dev calls the `transferOwnershipOnTokenContract` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-transferOwnershipOnTokenContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callTransferOwnershipOnTokenContract(address _newOwner) external onlyAdmin {\n        token.transferOwnershipOnTokenContract(_newOwner);\n    }\n\n    /**\n     *  @dev calls the `transferOwnershipOnIdentityRegistryContract` function on the Identity Registry contract\n     *  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n     *  See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callTransferOwnershipOnIdentityRegistryContract(address _newOwner) external onlyAdmin {\n        token.identityRegistry().transferOwnershipOnIdentityRegistryContract(_newOwner);\n    }\n\n    /**\n     *  @dev calls the `transferOwnershipOnComplianceContract` function on the Compliance contract\n     *  OwnerManager has to be set as owner on the Compliance smart contract to process this function\n     *  See {ICompliance-transferOwnershipOnComplianceContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callTransferOwnershipOnComplianceContract(address _newOwner) external onlyAdmin {\n        token.compliance().transferOwnershipOnComplianceContract(_newOwner);\n    }\n\n    /**\n     *  @dev calls the `transferOwnershipOnClaimTopicsRegistryContract` function on the Claim Topics Registry contract\n     *  OwnerManager has to be set as owner on the Claim Topics registry smart contract to process this function\n     *  See {IClaimTopicsRegistry-transferOwnershipOnClaimTopicsRegistryContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callTransferOwnershipOnClaimTopicsRegistryContract(address _newOwner) external onlyAdmin {\n        token.identityRegistry().topicsRegistry().transferOwnershipOnClaimTopicsRegistryContract(_newOwner);\n    }\n\n    /**\n     *  @dev calls the `transferOwnershipOnIssuersRegistryContract` function on the Trusted Issuers Registry contract\n     *  OwnerManager has to be set as owner on the Trusted Issuers registry smart contract to process this function\n     *  See {ITrustedIssuersRegistry-transferOwnershipOnIssuersRegistryContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callTransferOwnershipOnIssuersRegistryContract(address _newOwner) external onlyAdmin {\n        token.identityRegistry().issuersRegistry().transferOwnershipOnIssuersRegistryContract(_newOwner);\n    }\n\n    /**\n     *  @dev calls the `addAgentOnTokenContract` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-addAgentOnTokenContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callAddAgentOnTokenContract(address _agent) external onlyAdmin {\n        token.addAgentOnTokenContract(_agent);\n    }\n\n    /**\n     *  @dev calls the `removeAgentOnTokenContract` function on the token contract\n     *  OwnerManager has to be set as owner on the token smart contract to process this function\n     *  See {IToken-removeAgentOnTokenContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callRemoveAgentOnTokenContract(address _agent) external onlyAdmin {\n        token.removeAgentOnTokenContract(_agent);\n    }\n\n    /**\n     *  @dev calls the `addAgentOnIdentityRegistryContract` function on the Identity Registry contract\n     *  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n     *  See {IIdentityRegistry-addAgentOnIdentityRegistryContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callAddAgentOnIdentityRegistryContract(address _agent) external onlyAdmin {\n        token.identityRegistry().addAgentOnIdentityRegistryContract(_agent);\n    }\n\n    /**\n     *  @dev calls the `removeAgentOnIdentityRegistryContract` function on the Identity Registry contract\n     *  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n     *  See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}.\n     *  Requires that msg.sender is an Admin of the OwnerManager contract\n     */\n    function callRemoveAgentOnIdentityRegistryContract(address _agent) external onlyAdmin {\n        token.identityRegistry().removeAgentOnIdentityRegistryContract(_agent);\n    }\n}\n",
  "sourcePath": "/home/webxpert/workspace/shipfinex/latest-repos/tokenx_smartcontract/contracts/roles/OwnerManager.sol",
  "ast": {
    "absolutePath": "project:/contracts/roles/OwnerManager.sol",
    "exportedSymbols": {
      "Context": [
        3401
      ],
      "IClaimIssuer": [
        1456
      ],
      "IClaimTopicsRegistry": [
        6444
      ],
      "ICompliance": [
        5596
      ],
      "IERC20": [
        3317
      ],
      "IERC734": [
        1609
      ],
      "IERC735": [
        1734
      ],
      "IIdentity": [
        1743
      ],
      "IIdentityRegistry": [
        6637
      ],
      "IIdentityRegistryStorage": [
        6759
      ],
      "IToken": [
        12234
      ],
      "ITrustedIssuersRegistry": [
        6856
      ],
      "Ownable": [
        2505
      ],
      "OwnerManager": [
        10911
      ],
      "OwnerRoles": [
        11393
      ],
      "Roles": [
        11901
      ]
    },
    "id": 10912,
    "license": "GPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 10169,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "1093:23:47"
      },
      {
        "absolutePath": "project:/contracts/token/IToken.sol",
        "file": "../token/IToken.sol",
        "id": 10170,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 12235,
        "src": "1118:29:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/IIdentityRegistry.sol",
        "file": "../registry/IIdentityRegistry.sol",
        "id": 10171,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 6638,
        "src": "1148:43:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/ITrustedIssuersRegistry.sol",
        "file": "../registry/ITrustedIssuersRegistry.sol",
        "id": 10172,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 6857,
        "src": "1192:49:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/IClaimTopicsRegistry.sol",
        "file": "../registry/IClaimTopicsRegistry.sol",
        "id": 10173,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 6445,
        "src": "1242:46:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/compliance/ICompliance.sol",
        "file": "../compliance/ICompliance.sol",
        "id": 10174,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 5597,
        "src": "1289:39:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/roles/OwnerRoles.sol",
        "file": "./OwnerRoles.sol",
        "id": 10175,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 11394,
        "src": "1329:26:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/interface/IIdentity.sol",
        "file": "@onchain-id/solidity/contracts/interface/IIdentity.sol",
        "id": 10176,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 1744,
        "src": "1356:64:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/interface/IClaimIssuer.sol",
        "file": "@onchain-id/solidity/contracts/interface/IClaimIssuer.sol",
        "id": 10177,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 10912,
        "sourceUnit": 1457,
        "src": "1421:67:47",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 10178,
              "name": "OwnerRoles",
              "nameLocations": [
                "1515:10:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 11393,
              "src": "1515:10:47"
            },
            "id": 10179,
            "nodeType": "InheritanceSpecifier",
            "src": "1515:10:47"
          }
        ],
        "canonicalName": "OwnerManager",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 10911,
        "linearizedBaseContracts": [
          10911,
          11393,
          2505,
          3401
        ],
        "name": "OwnerManager",
        "nameLocation": "1499:12:47",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "documentation": {
              "id": 10180,
              "nodeType": "StructuredDocumentation",
              "src": "1532:64:47",
              "text": "@dev the token that is managed by this OwnerManager Contract"
            },
            "functionSelector": "fc0c546a",
            "id": 10183,
            "mutability": "mutable",
            "name": "token",
            "nameLocation": "1615:5:47",
            "nodeType": "VariableDeclaration",
            "scope": 10911,
            "src": "1601:19:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IToken_$12234",
              "typeString": "contract IToken"
            },
            "typeName": {
              "id": 10182,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 10181,
                "name": "IToken",
                "nameLocations": [
                  "1601:6:47"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 12234,
                "src": "1601:6:47"
              },
              "referencedDeclaration": 12234,
              "src": "1601:6:47",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IToken_$12234",
                "typeString": "contract IToken"
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 10184,
              "nodeType": "StructuredDocumentation",
              "src": "1627:318:47",
              "text": "@dev Event emitted for each executed interaction with the compliance contract.\n For gas efficiency, only the interaction calldata selector (first 4\n bytes) is included in the event. For interactions without calldata or\n whose calldata is shorter than 4 bytes, the selector will be `0`."
            },
            "eventSelector": "5779a24d18a4639b1d59461e68c00fb0cd02533a4c5a6ff3ca6363e23e2fff56",
            "id": 10190,
            "name": "ComplianceInteraction",
            "nameLocation": "1956:21:47",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 10189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10186,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "1994:6:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10190,
                  "src": "1978:22:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10185,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1978:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10188,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "selector",
                  "nameLocation": "2009:8:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10190,
                  "src": "2002:15:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 10187,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2002:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1977:41:47"
            },
            "src": "1950:69:47"
          },
          {
            "body": {
              "id": 10202,
              "nodeType": "Block",
              "src": "2257:39:47",
              "statements": [
                {
                  "expression": {
                    "id": 10200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 10196,
                      "name": "token",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10183,
                      "src": "2267:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IToken_$12234",
                        "typeString": "contract IToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 10198,
                          "name": "_token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10193,
                          "src": "2282:6:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 10197,
                        "name": "IToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12234,
                        "src": "2275:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IToken_$12234_$",
                          "typeString": "type(contract IToken)"
                        }
                      },
                      "id": 10199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2275:14:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IToken_$12234",
                        "typeString": "contract IToken"
                      }
                    },
                    "src": "2267:22:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IToken_$12234",
                      "typeString": "contract IToken"
                    }
                  },
                  "id": 10201,
                  "nodeType": "ExpressionStatement",
                  "src": "2267:22:47"
                }
              ]
            },
            "documentation": {
              "id": 10191,
              "nodeType": "StructuredDocumentation",
              "src": "2025:199:47",
              "text": "  @dev the constructor initiates the OwnerManager contract\n  and sets msg.sender as owner of the contract\n  @param _token the token managed by this OwnerManager contract"
            },
            "id": 10203,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10193,
                  "mutability": "mutable",
                  "name": "_token",
                  "nameLocation": "2249:6:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10203,
                  "src": "2241:14:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10192,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2241:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2240:16:47"
            },
            "returnParameters": {
              "id": 10195,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2257:0:47"
            },
            "scope": 10911,
            "src": "2229:67:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10240,
              "nodeType": "Block",
              "src": "2892:271:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10216,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10209,
                                  "src": "2955:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2947:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10214,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2947:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2947:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10213,
                            "name": "isRegistryAddressSetter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11046,
                            "src": "2923:23:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2923:44:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10224,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "3017:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10225,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3021:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3017:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10222,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "3006:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10223,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "3010:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "3006:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10226,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3006:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10221,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "2996:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2996:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3031:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10219,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10209,
                              "src": "2971:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2982:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "2971:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2971:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2923:110:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f54205265676973747279204164647265737320536574746572",
                        "id": 10231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3047:45:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3",
                          "typeString": "literal_string \"Role: Sender is NOT Registry Address Setter\""
                        },
                        "value": "Role: Sender is NOT Registry Address Setter"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3",
                          "typeString": "literal_string \"Role: Sender is NOT Registry Address Setter\""
                        }
                      ],
                      "id": 10212,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2902:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2902:200:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10233,
                  "nodeType": "ExpressionStatement",
                  "src": "2902:200:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10237,
                        "name": "_identityRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10206,
                        "src": "3138:17:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 10234,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "3112:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10236,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3118:19:47",
                      "memberName": "setIdentityRegistry",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12096,
                      "src": "3112:25:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3112:44:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10239,
                  "nodeType": "ExpressionStatement",
                  "src": "3112:44:47"
                }
              ]
            },
            "documentation": {
              "id": 10204,
              "nodeType": "StructuredDocumentation",
              "src": "2302:494:47",
              "text": "  @dev calls the `setIdentityRegistry` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-setIdentityRegistry}.\n  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "9d6de3bc",
            "id": 10241,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callSetIdentityRegistry",
            "nameLocation": "2810:23:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10206,
                  "mutability": "mutable",
                  "name": "_identityRegistry",
                  "nameLocation": "2842:17:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10241,
                  "src": "2834:25:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10205,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2834:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10209,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "2871:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10241,
                  "src": "2861:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10208,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10207,
                      "name": "IIdentity",
                      "nameLocations": [
                        "2861:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "2861:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "2861:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2833:49:47"
            },
            "returnParameters": {
              "id": 10211,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2892:0:47"
            },
            "scope": 10911,
            "src": "2801:362:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10278,
              "nodeType": "Block",
              "src": "3733:248:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10254,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10247,
                                  "src": "3791:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3783:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10252,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3783:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3783:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10251,
                            "name": "isComplianceSetter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11106,
                            "src": "3764:18:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3764:39:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10262,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "3853:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10263,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3857:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3853:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10260,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "3842:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10261,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "3846:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "3842:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3842:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10259,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "3832:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3832:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3867:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10257,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10247,
                              "src": "3807:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3818:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "3807:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10267,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3807:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3764:105:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420436f6d706c69616e636520536574746572",
                        "id": 10269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3883:39:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a1ecde2814e226e76b1becf9e74df5f5ede14dd7fbfcb5ff15be14160dcf1430",
                          "typeString": "literal_string \"Role: Sender is NOT Compliance Setter\""
                        },
                        "value": "Role: Sender is NOT Compliance Setter"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a1ecde2814e226e76b1becf9e74df5f5ede14dd7fbfcb5ff15be14160dcf1430",
                          "typeString": "literal_string \"Role: Sender is NOT Compliance Setter\""
                        }
                      ],
                      "id": 10250,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3743:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10270,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3743:189:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10271,
                  "nodeType": "ExpressionStatement",
                  "src": "3743:189:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10275,
                        "name": "_compliance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10244,
                        "src": "3962:11:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 10272,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "3942:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10274,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3948:13:47",
                      "memberName": "setCompliance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12102,
                      "src": "3942:19:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3942:32:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10277,
                  "nodeType": "ExpressionStatement",
                  "src": "3942:32:47"
                }
              ]
            },
            "documentation": {
              "id": 10242,
              "nodeType": "StructuredDocumentation",
              "src": "3169:480:47",
              "text": "  @dev calls the `setCompliance` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-setCompliance}.\n  Requires that `_onchainID` is set as ComplianceSetter on the OwnerManager contract\n  Requires that msg.sender is a MANAGEMENT KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "951af88d",
            "id": 10279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callSetCompliance",
            "nameLocation": "3663:17:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10244,
                  "mutability": "mutable",
                  "name": "_compliance",
                  "nameLocation": "3689:11:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10279,
                  "src": "3681:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10243,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3681:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10247,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "3712:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10279,
                  "src": "3702:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10246,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10245,
                      "name": "IIdentity",
                      "nameLocations": [
                        "3702:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "3702:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "3702:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3680:43:47"
            },
            "returnParameters": {
              "id": 10249,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3733:0:47"
            },
            "scope": 10911,
            "src": "3654:327:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10327,
              "nodeType": "Block",
              "src": "4536:1314:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10292,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10285,
                                  "src": "4595:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4587:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10290,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4587:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4587:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10289,
                            "name": "isComplianceManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11166,
                            "src": "4567:19:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4567:40:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10300,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "4657:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4661:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "4657:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10298,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "4646:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10299,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "4650:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "4646:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4646:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10297,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "4636:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4636:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4671:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10295,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10285,
                              "src": "4611:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4622:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "4611:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4611:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4567:106:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420436f6d706c69616e6365204d616e61676572",
                        "id": 10307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4687:40:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b285b7852006b068b7086b84800d3f6a9a5bef5a287e9c64e072dc1168937613",
                          "typeString": "literal_string \"Role: Sender is NOT Compliance Manager\""
                        },
                        "value": "Role: Sender is NOT Compliance Manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b285b7852006b068b7086b84800d3f6a9a5bef5a287e9c64e072dc1168937613",
                          "typeString": "literal_string \"Role: Sender is NOT Compliance Manager\""
                        }
                      ],
                      "id": 10288,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4546:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4546:182:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10309,
                  "nodeType": "ExpressionStatement",
                  "src": "4546:182:47"
                },
                {
                  "assignments": [
                    10311
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10311,
                      "mutability": "mutable",
                      "name": "target",
                      "nameLocation": "4746:6:47",
                      "nodeType": "VariableDeclaration",
                      "scope": 10327,
                      "src": "4738:14:47",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 10310,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4738:7:47",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 10318,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 10314,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10183,
                            "src": "4763:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$12234",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 10315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4769:10:47",
                          "memberName": "compliance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12018,
                          "src": "4763:16:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ICompliance_$5596_$",
                            "typeString": "function () view external returns (contract ICompliance)"
                          }
                        },
                        "id": 10316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4763:18:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICompliance_$5596",
                          "typeString": "contract ICompliance"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ICompliance_$5596",
                          "typeString": "contract ICompliance"
                        }
                      ],
                      "id": 10313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4755:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 10312,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4755:7:47",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 10317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4755:27:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4738:44:47"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "5222:552:47",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5236:36:47",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5267:4:47",
                              "type": "",
                              "value": "0x40"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "5261:5:47"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5261:11:47"
                        },
                        "variables": [
                          {
                            "name": "freeMemoryPointer",
                            "nodeType": "YulTypedName",
                            "src": "5240:17:47",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "freeMemoryPointer",
                              "nodeType": "YulIdentifier",
                              "src": "5298:17:47"
                            },
                            {
                              "name": "callData.offset",
                              "nodeType": "YulIdentifier",
                              "src": "5317:15:47"
                            },
                            {
                              "name": "callData.length",
                              "nodeType": "YulIdentifier",
                              "src": "5334:15:47"
                            }
                          ],
                          "functionName": {
                            "name": "calldatacopy",
                            "nodeType": "YulIdentifier",
                            "src": "5285:12:47"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5285:65:47"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5285:65:47"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5634:126:47",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5671:1:47",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5674:1:47",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "5677:14:47"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5677:16:47"
                                  }
                                ],
                                "functionName": {
                                  "name": "returndatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "5656:14:47"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5656:38:47"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5656:38:47"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5722:1:47",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "5725:14:47"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5725:16:47"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5715:6:47"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5715:27:47"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5715:27:47"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "functionName": {
                                    "name": "gas",
                                    "nodeType": "YulIdentifier",
                                    "src": "5416:3:47"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "5416:5:47"
                                },
                                {
                                  "name": "target",
                                  "nodeType": "YulIdentifier",
                                  "src": "5443:6:47"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5471:1:47",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "name": "freeMemoryPointer",
                                  "nodeType": "YulIdentifier",
                                  "src": "5494:17:47"
                                },
                                {
                                  "name": "callData.length",
                                  "nodeType": "YulIdentifier",
                                  "src": "5533:15:47"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5570:1:47",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "5593:1:47",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "call",
                                "nodeType": "YulIdentifier",
                                "src": "5390:4:47"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "5390:226:47"
                            }
                          ],
                          "functionName": {
                            "name": "iszero",
                            "nodeType": "YulIdentifier",
                            "src": "5366:6:47"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5366:251:47"
                        },
                        "nodeType": "YulIf",
                        "src": "5363:397:47"
                      }
                    ]
                  },
                  "evmVersion": "london",
                  "externalReferences": [
                    {
                      "declaration": 10282,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5334:15:47",
                      "suffix": "length",
                      "valueSize": 1
                    },
                    {
                      "declaration": 10282,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5533:15:47",
                      "suffix": "length",
                      "valueSize": 1
                    },
                    {
                      "declaration": 10282,
                      "isOffset": true,
                      "isSlot": false,
                      "src": "5317:15:47",
                      "suffix": "offset",
                      "valueSize": 1
                    },
                    {
                      "declaration": 10311,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "5443:6:47",
                      "valueSize": 1
                    }
                  ],
                  "id": 10319,
                  "nodeType": "InlineAssembly",
                  "src": "5213:561:47"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 10321,
                        "name": "target",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10311,
                        "src": "5811:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 10323,
                            "name": "callData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10282,
                            "src": "5828:8:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "id": 10322,
                          "name": "selector",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10344,
                          "src": "5819:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                            "typeString": "function (bytes calldata) pure returns (bytes4)"
                          }
                        },
                        "id": 10324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5819:18:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 10320,
                      "name": "ComplianceInteraction",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10190,
                      "src": "5789:21:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes4_$returns$__$",
                        "typeString": "function (address,bytes4)"
                      }
                    },
                    "id": 10325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5789:49:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10326,
                  "nodeType": "EmitStatement",
                  "src": "5784:54:47"
                }
              ]
            },
            "documentation": {
              "id": 10280,
              "nodeType": "StructuredDocumentation",
              "src": "3987:456:47",
              "text": "  @dev calls any onlyOwner function available on the compliance contract\n  OwnerManager has to be set as owner on the compliance smart contract to process this function\n  Requires that `_onchainID` is set as ComplianceManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "5c5f2047",
            "id": 10328,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callComplianceFunction",
            "nameLocation": "4457:22:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10282,
                  "mutability": "mutable",
                  "name": "callData",
                  "nameLocation": "4495:8:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10328,
                  "src": "4480:23:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10281,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4480:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10285,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "4515:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10328,
                  "src": "4505:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10284,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10283,
                      "name": "IIdentity",
                      "nameLocations": [
                        "4505:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "4505:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "4505:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4479:47:47"
            },
            "returnParameters": {
              "id": 10287,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4536:0:47"
            },
            "scope": 10911,
            "src": "4448:1402:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10343,
              "nodeType": "Block",
              "src": "6159:722:47",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 10336,
                        "name": "callData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10331,
                        "src": "6173:8:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      "id": 10337,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "6182:6:47",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6173:15:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "34",
                      "id": 10338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6192:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "6173:20:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10342,
                  "nodeType": "IfStatement",
                  "src": "6169:702:47",
                  "trueBody": {
                    "id": 10341,
                    "nodeType": "Block",
                    "src": "6195:676:47",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "6782:75:47",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6800:39:47",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "callData.offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6823:15:47"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6810:12:47"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6810:29:47"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "6800:6:47"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 10331,
                            "isOffset": true,
                            "isSlot": false,
                            "src": "6823:15:47",
                            "suffix": "offset",
                            "valueSize": 1
                          },
                          {
                            "declaration": 10334,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6800:6:47",
                            "valueSize": 1
                          }
                        ],
                        "id": 10340,
                        "nodeType": "InlineAssembly",
                        "src": "6773:84:47"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 10329,
              "nodeType": "StructuredDocumentation",
              "src": "5856:217:47",
              "text": "@dev Extracts the Solidity ABI selector for the specified interaction.\n @param callData Interaction data.\n @return result The 4 byte function selector of the call encoded in\n this interaction."
            },
            "id": 10344,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "selector",
            "nameLocation": "6087:8:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10331,
                  "mutability": "mutable",
                  "name": "callData",
                  "nameLocation": "6111:8:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10344,
                  "src": "6096:23:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10330,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6096:5:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6095:25:47"
            },
            "returnParameters": {
              "id": 10335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10334,
                  "mutability": "mutable",
                  "name": "result",
                  "nameLocation": "6151:6:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10344,
                  "src": "6144:13:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 10333,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "6144:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6143:15:47"
            },
            "scope": 10911,
            "src": "6078:803:47",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 10381,
              "nodeType": "Block",
              "src": "7437:244:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10357,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10350,
                                  "src": "7495:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7487:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10355,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7487:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7487:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10354,
                            "name": "isTokenInfoManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11346,
                            "src": "7468:18:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7468:39:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10365,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "7557:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7561:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "7557:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10363,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "7546:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10364,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "7550:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "7546:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7546:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10362,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "7536:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7536:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7571:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10360,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10350,
                              "src": "7511:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7522:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "7511:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7511:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7468:105:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d6174696f6e204d616e61676572",
                        "id": 10372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7587:47:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f",
                          "typeString": "literal_string \"Role: Sender is NOT Token Information Manager\""
                        },
                        "value": "Role: Sender is NOT Token Information Manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f",
                          "typeString": "literal_string \"Role: Sender is NOT Token Information Manager\""
                        }
                      ],
                      "id": 10353,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "7447:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7447:197:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10374,
                  "nodeType": "ExpressionStatement",
                  "src": "7447:197:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10378,
                        "name": "_name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10347,
                        "src": "7668:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "expression": {
                        "id": 10375,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "7654:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10377,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "7660:7:47",
                      "memberName": "setName",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12046,
                      "src": "7654:13:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) external"
                      }
                    },
                    "id": 10379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7654:20:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10380,
                  "nodeType": "ExpressionStatement",
                  "src": "7654:20:47"
                }
              ]
            },
            "documentation": {
              "id": 10345,
              "nodeType": "StructuredDocumentation",
              "src": "6887:465:47",
              "text": "  @dev calls the `setName` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-setName}.\n  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "309ff3d1",
            "id": 10382,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callSetTokenName",
            "nameLocation": "7366:16:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10347,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "7399:5:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10382,
                  "src": "7383:21:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10346,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7383:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10350,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "7416:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10382,
                  "src": "7406:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10349,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10348,
                      "name": "IIdentity",
                      "nameLocations": [
                        "7406:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "7406:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "7406:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7382:45:47"
            },
            "returnParameters": {
              "id": 10352,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7437:0:47"
            },
            "scope": 10911,
            "src": "7357:324:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10419,
              "nodeType": "Block",
              "src": "8245:248:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10395,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10388,
                                  "src": "8303:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8295:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10393,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8295:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8295:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10392,
                            "name": "isTokenInfoManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11346,
                            "src": "8276:18:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8276:39:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10403,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "8365:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8369:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "8365:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10401,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "8354:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10402,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "8358:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "8354:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8354:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10400,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "8344:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8344:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8379:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10398,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10388,
                              "src": "8319:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8330:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "8319:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8319:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8276:105:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d6174696f6e204d616e61676572",
                        "id": 10410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8395:47:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f",
                          "typeString": "literal_string \"Role: Sender is NOT Token Information Manager\""
                        },
                        "value": "Role: Sender is NOT Token Information Manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f",
                          "typeString": "literal_string \"Role: Sender is NOT Token Information Manager\""
                        }
                      ],
                      "id": 10391,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "8255:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8255:197:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10412,
                  "nodeType": "ExpressionStatement",
                  "src": "8255:197:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10416,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10385,
                        "src": "8478:7:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      ],
                      "expression": {
                        "id": 10413,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "8462:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "8468:9:47",
                      "memberName": "setSymbol",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12052,
                      "src": "8462:15:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory) external"
                      }
                    },
                    "id": 10417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8462:24:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10418,
                  "nodeType": "ExpressionStatement",
                  "src": "8462:24:47"
                }
              ]
            },
            "documentation": {
              "id": 10383,
              "nodeType": "StructuredDocumentation",
              "src": "7687:469:47",
              "text": "  @dev calls the `setSymbol` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-setSymbol}.\n  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "2af70c30",
            "id": 10420,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callSetTokenSymbol",
            "nameLocation": "8170:18:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10385,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "8205:7:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10420,
                  "src": "8189:23:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 10384,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8189:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10388,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "8224:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10420,
                  "src": "8214:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10387,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10386,
                      "name": "IIdentity",
                      "nameLocations": [
                        "8214:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "8214:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "8214:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8188:47:47"
            },
            "returnParameters": {
              "id": 10390,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8245:0:47"
            },
            "scope": 10911,
            "src": "8161:332:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10457,
              "nodeType": "Block",
              "src": "9070:259:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10447,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10433,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10426,
                                  "src": "9128:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9120:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10431,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9120:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9120:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10430,
                            "name": "isTokenInfoManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11346,
                            "src": "9101:18:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9101:39:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10441,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "9190:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10442,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "9194:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "9190:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10439,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "9179:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "9183:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "9179:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10443,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9179:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10438,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "9169:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9169:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9204:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10436,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10426,
                              "src": "9144:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9155:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "9144:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9144:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "9101:105:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420546f6b656e20496e666f726d6174696f6e204d616e61676572",
                        "id": 10448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9220:47:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f",
                          "typeString": "literal_string \"Role: Sender is NOT Token Information Manager\""
                        },
                        "value": "Role: Sender is NOT Token Information Manager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b71b9889449f962d2d0eb88d755e423b7f6b6e33ddd77ebde6ad7c451f28935f",
                          "typeString": "literal_string \"Role: Sender is NOT Token Information Manager\""
                        }
                      ],
                      "id": 10429,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9080:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9080:197:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10450,
                  "nodeType": "ExpressionStatement",
                  "src": "9080:197:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10454,
                        "name": "_tokenOnchainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10423,
                        "src": "9306:15:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 10451,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "9287:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "9293:12:47",
                      "memberName": "setOnchainID",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12058,
                      "src": "9287:18:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9287:35:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10456,
                  "nodeType": "ExpressionStatement",
                  "src": "9287:35:47"
                }
              ]
            },
            "documentation": {
              "id": 10421,
              "nodeType": "StructuredDocumentation",
              "src": "8499:479:47",
              "text": "  @dev calls the `setOnchainID` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-setOnchainID}.\n  Requires that `_tokenOnchainID` is set as TokenInfoManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "87cc060c",
            "id": 10458,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callSetTokenOnchainID",
            "nameLocation": "8992:21:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10427,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10423,
                  "mutability": "mutable",
                  "name": "_tokenOnchainID",
                  "nameLocation": "9022:15:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10458,
                  "src": "9014:23:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10422,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9014:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10426,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "9049:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10458,
                  "src": "9039:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10425,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10424,
                      "name": "IIdentity",
                      "nameLocations": [
                        "9039:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "9039:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "9039:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9013:47:47"
            },
            "returnParameters": {
              "id": 10428,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9070:0:47"
            },
            "scope": 10911,
            "src": "8983:346:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10497,
              "nodeType": "Block",
              "src": "9972:296:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10471,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10464,
                                  "src": "10035:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10027:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10469,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10027:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10027:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10468,
                            "name": "isRegistryAddressSetter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11046,
                            "src": "10003:23:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10003:44:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10479,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "10097:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10480,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "10101:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "10097:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10477,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "10086:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10478,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "10090:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "10086:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10086:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10476,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "10076:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10076:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10111:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10474,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10464,
                              "src": "10051:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10062:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "10051:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10051:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "10003:110:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f54205265676973747279204164647265737320536574746572",
                        "id": 10486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10127:45:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3",
                          "typeString": "literal_string \"Role: Sender is NOT Registry Address Setter\""
                        },
                        "value": "Role: Sender is NOT Registry Address Setter"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3",
                          "typeString": "literal_string \"Role: Sender is NOT Registry Address Setter\""
                        }
                      ],
                      "id": 10467,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9982:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9982:200:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10488,
                  "nodeType": "ExpressionStatement",
                  "src": "9982:200:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10494,
                        "name": "_claimTopicsRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10461,
                        "src": "10240:20:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 10489,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10183,
                            "src": "10192:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$12234",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 10491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10198:16:47",
                          "memberName": "identityRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12011,
                          "src": "10192:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                            "typeString": "function () view external returns (contract IIdentityRegistry)"
                          }
                        },
                        "id": 10492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10192:24:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                          "typeString": "contract IIdentityRegistry"
                        }
                      },
                      "id": 10493,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "10217:22:47",
                      "memberName": "setClaimTopicsRegistry",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6527,
                      "src": "10192:47:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10192:69:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10496,
                  "nodeType": "ExpressionStatement",
                  "src": "10192:69:47"
                }
              ]
            },
            "documentation": {
              "id": 10459,
              "nodeType": "StructuredDocumentation",
              "src": "9335:535:47",
              "text": "  @dev calls the `setClaimTopicsRegistry` function on the Identity Registry contract\n  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n  See {IIdentityRegistry-setClaimTopicsRegistry}.\n  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "eeac6fe6",
            "id": 10498,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callSetClaimTopicsRegistry",
            "nameLocation": "9884:26:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10461,
                  "mutability": "mutable",
                  "name": "_claimTopicsRegistry",
                  "nameLocation": "9919:20:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10498,
                  "src": "9911:28:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9911:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10464,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "9951:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10498,
                  "src": "9941:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10463,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10462,
                      "name": "IIdentity",
                      "nameLocations": [
                        "9941:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "9941:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "9941:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9910:52:47"
            },
            "returnParameters": {
              "id": 10466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9972:0:47"
            },
            "scope": 10911,
            "src": "9875:393:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10537,
              "nodeType": "Block",
              "src": "10923:302:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10511,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10504,
                                  "src": "10986:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10978:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10509,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10978:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10978:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10508,
                            "name": "isRegistryAddressSetter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11046,
                            "src": "10954:23:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10954:44:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10519,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "11048:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10520,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "11052:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "11048:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10517,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "11037:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "11041:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "11037:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11037:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10516,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "11027:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11027:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11062:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10514,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10504,
                              "src": "11002:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10515,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "11013:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "11002:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11002:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "10954:110:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f54205265676973747279204164647265737320536574746572",
                        "id": 10526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11078:45:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3",
                          "typeString": "literal_string \"Role: Sender is NOT Registry Address Setter\""
                        },
                        "value": "Role: Sender is NOT Registry Address Setter"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6a382f0aff803ae4e0a546feb69f7fafae17cefd143109fa23ea4753e2512ba3",
                          "typeString": "literal_string \"Role: Sender is NOT Registry Address Setter\""
                        }
                      ],
                      "id": 10507,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "10933:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10933:200:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10528,
                  "nodeType": "ExpressionStatement",
                  "src": "10933:200:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10534,
                        "name": "_trustedIssuersRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10501,
                        "src": "11194:23:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 10529,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10183,
                            "src": "11143:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$12234",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 10531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11149:16:47",
                          "memberName": "identityRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12011,
                          "src": "11143:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                            "typeString": "function () view external returns (contract IIdentityRegistry)"
                          }
                        },
                        "id": 10532,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11143:24:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                          "typeString": "contract IIdentityRegistry"
                        }
                      },
                      "id": 10533,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "11168:25:47",
                      "memberName": "setTrustedIssuersRegistry",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6533,
                      "src": "11143:50:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11143:75:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10536,
                  "nodeType": "ExpressionStatement",
                  "src": "11143:75:47"
                }
              ]
            },
            "documentation": {
              "id": 10499,
              "nodeType": "StructuredDocumentation",
              "src": "10274:541:47",
              "text": "  @dev calls the `setTrustedIssuersRegistry` function on the Identity Registry contract\n  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n  See {IIdentityRegistry-setTrustedIssuersRegistry}.\n  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "f087249c",
            "id": 10538,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callSetTrustedIssuersRegistry",
            "nameLocation": "10829:29:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10501,
                  "mutability": "mutable",
                  "name": "_trustedIssuersRegistry",
                  "nameLocation": "10867:23:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10538,
                  "src": "10859:31:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10500,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10859:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10504,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "10902:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10538,
                  "src": "10892:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10503,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10502,
                      "name": "IIdentity",
                      "nameLocations": [
                        "10892:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "10892:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "10892:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10858:55:47"
            },
            "returnParameters": {
              "id": 10506,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10923:0:47"
            },
            "scope": 10911,
            "src": "10820:405:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10584,
              "nodeType": "Block",
              "src": "11933:316:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10569,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10555,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10548,
                                  "src": "11997:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10554,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11989:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10553,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11989:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11989:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10552,
                            "name": "isIssuersRegistryManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11286,
                            "src": "11964:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11964:45:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10563,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "12059:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10564,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "12063:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "12059:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10561,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "12048:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10562,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "12052:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "12048:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10565,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12048:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10560,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "12038:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12038:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12073:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10558,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10548,
                              "src": "12013:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "12024:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "12013:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12013:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "11964:111:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f54204973737565727352656769737472794d616e61676572",
                        "id": 10570,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12089:44:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b",
                          "typeString": "literal_string \"Role: Sender is NOT IssuersRegistryManager\""
                        },
                        "value": "Role: Sender is NOT IssuersRegistryManager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b",
                          "typeString": "literal_string \"Role: Sender is NOT IssuersRegistryManager\""
                        }
                      ],
                      "id": 10551,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "11943:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11943:200:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10572,
                  "nodeType": "ExpressionStatement",
                  "src": "11943:200:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10580,
                        "name": "_trustedIssuer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10542,
                        "src": "12213:14:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                          "typeString": "contract IClaimIssuer"
                        }
                      },
                      {
                        "id": 10581,
                        "name": "_claimTopics",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10545,
                        "src": "12229:12:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                          "typeString": "contract IClaimIssuer"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10573,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10183,
                                "src": "12153:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IToken_$12234",
                                  "typeString": "contract IToken"
                                }
                              },
                              "id": 10575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12159:16:47",
                              "memberName": "identityRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12011,
                              "src": "12153:22:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                                "typeString": "function () view external returns (contract IIdentityRegistry)"
                              }
                            },
                            "id": 10576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12153:24:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 10577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "12178:15:47",
                          "memberName": "issuersRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6611,
                          "src": "12153:40:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ITrustedIssuersRegistry_$6856_$",
                            "typeString": "function () view external returns (contract ITrustedIssuersRegistry)"
                          }
                        },
                        "id": 10578,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12153:42:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                          "typeString": "contract ITrustedIssuersRegistry"
                        }
                      },
                      "id": 10579,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "12196:16:47",
                      "memberName": "addTrustedIssuer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6796,
                      "src": "12153:59:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IClaimIssuer_$1456_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (contract IClaimIssuer,uint256[] memory) external"
                      }
                    },
                    "id": 10582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12153:89:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10583,
                  "nodeType": "ExpressionStatement",
                  "src": "12153:89:47"
                }
              ]
            },
            "documentation": {
              "id": 10539,
              "nodeType": "StructuredDocumentation",
              "src": "11231:544:47",
              "text": "  @dev calls the `addTrustedIssuer` function on the Trusted Issuers Registry contract\n  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function\n  See {ITrustedIssuersRegistry-addTrustedIssuer}.\n  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "fc6de4b5",
            "id": 10585,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callAddTrustedIssuer",
            "nameLocation": "11789:20:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10549,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10542,
                  "mutability": "mutable",
                  "name": "_trustedIssuer",
                  "nameLocation": "11832:14:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10585,
                  "src": "11819:27:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 10541,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10540,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "11819:12:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "11819:12:47"
                    },
                    "referencedDeclaration": 1456,
                    "src": "11819:12:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10545,
                  "mutability": "mutable",
                  "name": "_claimTopics",
                  "nameLocation": "11875:12:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10585,
                  "src": "11856:31:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10543,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "11856:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10544,
                    "nodeType": "ArrayTypeName",
                    "src": "11856:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10548,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "11907:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10585,
                  "src": "11897:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10547,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10546,
                      "name": "IIdentity",
                      "nameLocations": [
                        "11897:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "11897:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "11897:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11809:114:47"
            },
            "returnParameters": {
              "id": 10550,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11933:0:47"
            },
            "scope": 10911,
            "src": "11780:469:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10627,
              "nodeType": "Block",
              "src": "12903:305:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10599,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10592,
                                  "src": "12967:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12959:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10597,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12959:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12959:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10596,
                            "name": "isIssuersRegistryManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11286,
                            "src": "12934:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12934:45:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10607,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "13029:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10608,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13033:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "13029:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10605,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "13018:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "13022:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "13018:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10609,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13018:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10604,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "13008:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13008:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13043:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10602,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10592,
                              "src": "12983:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "12994:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "12983:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12983:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12934:111:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f54204973737565727352656769737472794d616e61676572",
                        "id": 10614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13059:44:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b",
                          "typeString": "literal_string \"Role: Sender is NOT IssuersRegistryManager\""
                        },
                        "value": "Role: Sender is NOT IssuersRegistryManager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b",
                          "typeString": "literal_string \"Role: Sender is NOT IssuersRegistryManager\""
                        }
                      ],
                      "id": 10595,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "12913:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12913:200:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10616,
                  "nodeType": "ExpressionStatement",
                  "src": "12913:200:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10624,
                        "name": "_trustedIssuer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10589,
                        "src": "13186:14:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                          "typeString": "contract IClaimIssuer"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                          "typeString": "contract IClaimIssuer"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10617,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10183,
                                "src": "13123:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IToken_$12234",
                                  "typeString": "contract IToken"
                                }
                              },
                              "id": 10619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "13129:16:47",
                              "memberName": "identityRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12011,
                              "src": "13123:22:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                                "typeString": "function () view external returns (contract IIdentityRegistry)"
                              }
                            },
                            "id": 10620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13123:24:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 10621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "13148:15:47",
                          "memberName": "issuersRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6611,
                          "src": "13123:40:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ITrustedIssuersRegistry_$6856_$",
                            "typeString": "function () view external returns (contract ITrustedIssuersRegistry)"
                          }
                        },
                        "id": 10622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13123:42:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                          "typeString": "contract ITrustedIssuersRegistry"
                        }
                      },
                      "id": 10623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13166:19:47",
                      "memberName": "removeTrustedIssuer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6803,
                      "src": "13123:62:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IClaimIssuer_$1456_$returns$__$",
                        "typeString": "function (contract IClaimIssuer) external"
                      }
                    },
                    "id": 10625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13123:78:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10626,
                  "nodeType": "ExpressionStatement",
                  "src": "13123:78:47"
                }
              ]
            },
            "documentation": {
              "id": 10586,
              "nodeType": "StructuredDocumentation",
              "src": "12255:550:47",
              "text": "  @dev calls the `removeTrustedIssuer` function on the Trusted Issuers Registry contract\n  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function\n  See {ITrustedIssuersRegistry-removeTrustedIssuer}.\n  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "9ce2d88e",
            "id": 10628,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callRemoveTrustedIssuer",
            "nameLocation": "12819:23:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10593,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10589,
                  "mutability": "mutable",
                  "name": "_trustedIssuer",
                  "nameLocation": "12856:14:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10628,
                  "src": "12843:27:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 10588,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10587,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "12843:12:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "12843:12:47"
                    },
                    "referencedDeclaration": 1456,
                    "src": "12843:12:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10592,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "12882:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10628,
                  "src": "12872:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10591,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10590,
                      "name": "IIdentity",
                      "nameLocations": [
                        "12872:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "12872:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "12872:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12842:51:47"
            },
            "returnParameters": {
              "id": 10594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12903:0:47"
            },
            "scope": 10911,
            "src": "12810:398:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10674,
              "nodeType": "Block",
              "src": "13937:323:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10645,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10638,
                                  "src": "14001:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13993:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10643,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13993:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13993:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10642,
                            "name": "isIssuersRegistryManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11286,
                            "src": "13968:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13968:45:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10653,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "14063:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "14067:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "14063:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10651,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "14052:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10652,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "14056:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "14052:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14052:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10650,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "14042:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14042:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14077:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10648,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10638,
                              "src": "14017:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10649,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14028:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "14017:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14017:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "13968:111:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f54204973737565727352656769737472794d616e61676572",
                        "id": 10660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14093:44:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b",
                          "typeString": "literal_string \"Role: Sender is NOT IssuersRegistryManager\""
                        },
                        "value": "Role: Sender is NOT IssuersRegistryManager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1cea3625456e6a4ccdd9aecc83e1c4dc84afaf7a6d9e9fc4679c908c544ae59b",
                          "typeString": "literal_string \"Role: Sender is NOT IssuersRegistryManager\""
                        }
                      ],
                      "id": 10641,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "13947:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13947:200:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10662,
                  "nodeType": "ExpressionStatement",
                  "src": "13947:200:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10670,
                        "name": "_trustedIssuer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10632,
                        "src": "14224:14:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                          "typeString": "contract IClaimIssuer"
                        }
                      },
                      {
                        "id": 10671,
                        "name": "_claimTopics",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10635,
                        "src": "14240:12:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                          "typeString": "contract IClaimIssuer"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10663,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10183,
                                "src": "14157:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IToken_$12234",
                                  "typeString": "contract IToken"
                                }
                              },
                              "id": 10665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "14163:16:47",
                              "memberName": "identityRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12011,
                              "src": "14157:22:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                                "typeString": "function () view external returns (contract IIdentityRegistry)"
                              }
                            },
                            "id": 10666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14157:24:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 10667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "14182:15:47",
                          "memberName": "issuersRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6611,
                          "src": "14157:40:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ITrustedIssuersRegistry_$6856_$",
                            "typeString": "function () view external returns (contract ITrustedIssuersRegistry)"
                          }
                        },
                        "id": 10668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14157:42:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                          "typeString": "contract ITrustedIssuersRegistry"
                        }
                      },
                      "id": 10669,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14200:23:47",
                      "memberName": "updateIssuerClaimTopics",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6813,
                      "src": "14157:66:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IClaimIssuer_$1456_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (contract IClaimIssuer,uint256[] memory) external"
                      }
                    },
                    "id": 10672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14157:96:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10673,
                  "nodeType": "ExpressionStatement",
                  "src": "14157:96:47"
                }
              ]
            },
            "documentation": {
              "id": 10629,
              "nodeType": "StructuredDocumentation",
              "src": "13214:558:47",
              "text": "  @dev calls the `updateIssuerClaimTopics` function on the Trusted Issuers Registry contract\n  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function\n  See {ITrustedIssuersRegistry-updateIssuerClaimTopics}.\n  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "4837b797",
            "id": 10675,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callUpdateIssuerClaimTopics",
            "nameLocation": "13786:27:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10639,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10632,
                  "mutability": "mutable",
                  "name": "_trustedIssuer",
                  "nameLocation": "13836:14:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "13823:27:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 10631,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10630,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "13823:12:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "13823:12:47"
                    },
                    "referencedDeclaration": 1456,
                    "src": "13823:12:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10635,
                  "mutability": "mutable",
                  "name": "_claimTopics",
                  "nameLocation": "13879:12:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "13860:31:47",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10633,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13860:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 10634,
                    "nodeType": "ArrayTypeName",
                    "src": "13860:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10638,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "13911:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10675,
                  "src": "13901:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10637,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10636,
                      "name": "IIdentity",
                      "nameLocations": [
                        "13901:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "13901:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "13901:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13813:114:47"
            },
            "returnParameters": {
              "id": 10640,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13937:0:47"
            },
            "scope": 10911,
            "src": "13777:483:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10716,
              "nodeType": "Block",
              "src": "14877:291:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10688,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10681,
                                  "src": "14939:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14931:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10686,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14931:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14931:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10685,
                            "name": "isClaimRegistryManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11226,
                            "src": "14908:22:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14908:43:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10696,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "15001:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "15005:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "15001:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10694,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "14990:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10695,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "14994:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "14990:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14990:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10693,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "14980:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14980:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15015:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10691,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10681,
                              "src": "14955:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "14966:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "14955:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14955:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14908:109:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420436c61696d52656769737472794d616e61676572",
                        "id": 10703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15031:42:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e7e4489e6454b196d2e13650eaf0dbf52508d1518388bccb807dffebb5df19a6",
                          "typeString": "literal_string \"Role: Sender is NOT ClaimRegistryManager\""
                        },
                        "value": "Role: Sender is NOT ClaimRegistryManager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e7e4489e6454b196d2e13650eaf0dbf52508d1518388bccb807dffebb5df19a6",
                          "typeString": "literal_string \"Role: Sender is NOT ClaimRegistryManager\""
                        }
                      ],
                      "id": 10684,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "14887:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14887:196:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10705,
                  "nodeType": "ExpressionStatement",
                  "src": "14887:196:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10713,
                        "name": "_claimTopic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10678,
                        "src": "15149:11:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10706,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10183,
                                "src": "15093:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IToken_$12234",
                                  "typeString": "contract IToken"
                                }
                              },
                              "id": 10708,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "15099:16:47",
                              "memberName": "identityRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12011,
                              "src": "15093:22:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                                "typeString": "function () view external returns (contract IIdentityRegistry)"
                              }
                            },
                            "id": 10709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15093:24:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 10710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "15118:14:47",
                          "memberName": "topicsRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6618,
                          "src": "15093:39:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IClaimTopicsRegistry_$6444_$",
                            "typeString": "function () view external returns (contract IClaimTopicsRegistry)"
                          }
                        },
                        "id": 10711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15093:41:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                          "typeString": "contract IClaimTopicsRegistry"
                        }
                      },
                      "id": 10712,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15135:13:47",
                      "memberName": "addClaimTopic",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6424,
                      "src": "15093:55:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 10714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15093:68:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10715,
                  "nodeType": "ExpressionStatement",
                  "src": "15093:68:47"
                }
              ]
            },
            "documentation": {
              "id": 10676,
              "nodeType": "StructuredDocumentation",
              "src": "14266:527:47",
              "text": "  @dev calls the `addClaimTopic` function on the Claim Topics Registry contract\n  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function\n  See {IClaimTopicsRegistry-addClaimTopic}.\n  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "dd39042b",
            "id": 10717,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callAddClaimTopic",
            "nameLocation": "14807:17:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10682,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10678,
                  "mutability": "mutable",
                  "name": "_claimTopic",
                  "nameLocation": "14833:11:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10717,
                  "src": "14825:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10677,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14825:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10681,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "14856:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10717,
                  "src": "14846:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10680,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10679,
                      "name": "IIdentity",
                      "nameLocations": [
                        "14846:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "14846:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "14846:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14824:43:47"
            },
            "returnParameters": {
              "id": 10683,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14877:0:47"
            },
            "scope": 10911,
            "src": "14798:370:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10758,
              "nodeType": "Block",
              "src": "15794:294:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 10744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10730,
                                  "name": "_onchainID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10723,
                                  "src": "15856:10:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                                    "typeString": "contract IIdentity"
                                  }
                                ],
                                "id": 10729,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15848:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10728,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15848:7:47",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15848:19:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10727,
                            "name": "isClaimRegistryManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11226,
                            "src": "15825:22:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 10732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15825:43:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 10738,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967281,
                                        "src": "15918:3:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 10739,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "15922:6:47",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "15918:10:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "id": 10736,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967295,
                                      "src": "15907:3:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 10737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "15911:6:47",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "15907:10:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15907:22:47",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 10735,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967288,
                                "src": "15897:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 10741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15897:33:47",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "32",
                              "id": 10742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15932:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "expression": {
                              "id": 10733,
                              "name": "_onchainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10723,
                              "src": "15872:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$1743",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 10734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "15883:13:47",
                            "memberName": "keyHasPurpose",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1598,
                            "src": "15872:24:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,uint256) view external returns (bool)"
                            }
                          },
                          "id": 10743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15872:62:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "15825:109:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "526f6c653a2053656e646572206973204e4f5420436c61696d52656769737472794d616e61676572",
                        "id": 10745,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15948:42:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e7e4489e6454b196d2e13650eaf0dbf52508d1518388bccb807dffebb5df19a6",
                          "typeString": "literal_string \"Role: Sender is NOT ClaimRegistryManager\""
                        },
                        "value": "Role: Sender is NOT ClaimRegistryManager"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e7e4489e6454b196d2e13650eaf0dbf52508d1518388bccb807dffebb5df19a6",
                          "typeString": "literal_string \"Role: Sender is NOT ClaimRegistryManager\""
                        }
                      ],
                      "id": 10726,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "15804:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 10746,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15804:196:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10747,
                  "nodeType": "ExpressionStatement",
                  "src": "15804:196:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10755,
                        "name": "_claimTopic",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10720,
                        "src": "16069:11:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10748,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10183,
                                "src": "16010:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IToken_$12234",
                                  "typeString": "contract IToken"
                                }
                              },
                              "id": 10750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "16016:16:47",
                              "memberName": "identityRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12011,
                              "src": "16010:22:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                                "typeString": "function () view external returns (contract IIdentityRegistry)"
                              }
                            },
                            "id": 10751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16010:24:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 10752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "16035:14:47",
                          "memberName": "topicsRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6618,
                          "src": "16010:39:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IClaimTopicsRegistry_$6444_$",
                            "typeString": "function () view external returns (contract IClaimTopicsRegistry)"
                          }
                        },
                        "id": 10753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16010:41:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                          "typeString": "contract IClaimTopicsRegistry"
                        }
                      },
                      "id": 10754,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16052:16:47",
                      "memberName": "removeClaimTopic",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6430,
                      "src": "16010:58:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 10756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16010:71:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10757,
                  "nodeType": "ExpressionStatement",
                  "src": "16010:71:47"
                }
              ]
            },
            "documentation": {
              "id": 10718,
              "nodeType": "StructuredDocumentation",
              "src": "15174:533:47",
              "text": "  @dev calls the `removeClaimTopic` function on the Claim Topics Registry contract\n  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function\n  See {IClaimTopicsRegistry-removeClaimTopic}.\n  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract\n  Requires that msg.sender is an ACTION KEY on `_onchainID`\n  @param _onchainID the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
            },
            "functionSelector": "2f56d91b",
            "id": 10759,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callRemoveClaimTopic",
            "nameLocation": "15721:20:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10724,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10720,
                  "mutability": "mutable",
                  "name": "_claimTopic",
                  "nameLocation": "15750:11:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10759,
                  "src": "15742:19:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10719,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15742:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10723,
                  "mutability": "mutable",
                  "name": "_onchainID",
                  "nameLocation": "15773:10:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10759,
                  "src": "15763:20:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IIdentity_$1743",
                    "typeString": "contract IIdentity"
                  },
                  "typeName": {
                    "id": 10722,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 10721,
                      "name": "IIdentity",
                      "nameLocations": [
                        "15763:9:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1743,
                      "src": "15763:9:47"
                    },
                    "referencedDeclaration": 1743,
                    "src": "15763:9:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$1743",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15741:43:47"
            },
            "returnParameters": {
              "id": 10725,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15794:0:47"
            },
            "scope": 10911,
            "src": "15712:376:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10773,
              "nodeType": "Block",
              "src": "16509:66:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10770,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10762,
                        "src": "16558:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 10767,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "16519:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10769,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16525:32:47",
                      "memberName": "transferOwnershipOnTokenContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12221,
                      "src": "16519:38:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10771,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16519:49:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10772,
                  "nodeType": "ExpressionStatement",
                  "src": "16519:49:47"
                }
              ]
            },
            "documentation": {
              "id": 10760,
              "nodeType": "StructuredDocumentation",
              "src": "16094:326:47",
              "text": "  @dev calls the `transferOwnershipOnTokenContract` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-transferOwnershipOnTokenContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "aa1cef56",
            "id": 10774,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10765,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10764,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "16499:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "16499:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "16499:9:47"
              }
            ],
            "name": "callTransferOwnershipOnTokenContract",
            "nameLocation": "16434:36:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10762,
                  "mutability": "mutable",
                  "name": "_newOwner",
                  "nameLocation": "16479:9:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10774,
                  "src": "16471:17:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10761,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16471:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16470:19:47"
            },
            "returnParameters": {
              "id": 10766,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16509:0:47"
            },
            "scope": 10911,
            "src": "16425:150:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10790,
              "nodeType": "Block",
              "src": "17064:96:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10787,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10777,
                        "src": "17143:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 10782,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10183,
                            "src": "17074:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$12234",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 10784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "17080:16:47",
                          "memberName": "identityRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12011,
                          "src": "17074:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                            "typeString": "function () view external returns (contract IIdentityRegistry)"
                          }
                        },
                        "id": 10785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17074:24:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                          "typeString": "contract IIdentityRegistry"
                        }
                      },
                      "id": 10786,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "17099:43:47",
                      "memberName": "transferOwnershipOnIdentityRegistryContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6624,
                      "src": "17074:68:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17074:79:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10789,
                  "nodeType": "ExpressionStatement",
                  "src": "17074:79:47"
                }
              ]
            },
            "documentation": {
              "id": 10775,
              "nodeType": "StructuredDocumentation",
              "src": "16581:383:47",
              "text": "  @dev calls the `transferOwnershipOnIdentityRegistryContract` function on the Identity Registry contract\n  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n  See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "e3812318",
            "id": 10791,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10780,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10779,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "17054:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "17054:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "17054:9:47"
              }
            ],
            "name": "callTransferOwnershipOnIdentityRegistryContract",
            "nameLocation": "16978:47:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10777,
                  "mutability": "mutable",
                  "name": "_newOwner",
                  "nameLocation": "17034:9:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10791,
                  "src": "17026:17:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17026:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17025:19:47"
            },
            "returnParameters": {
              "id": 10781,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17064:0:47"
            },
            "scope": 10911,
            "src": "16969:191:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10807,
              "nodeType": "Block",
              "src": "17611:84:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10804,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10794,
                        "src": "17678:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 10799,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10183,
                            "src": "17621:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$12234",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 10801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "17627:10:47",
                          "memberName": "compliance",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12018,
                          "src": "17621:16:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ICompliance_$5596_$",
                            "typeString": "function () view external returns (contract ICompliance)"
                          }
                        },
                        "id": 10802,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17621:18:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ICompliance_$5596",
                          "typeString": "contract ICompliance"
                        }
                      },
                      "id": 10803,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "17640:37:47",
                      "memberName": "transferOwnershipOnComplianceContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5595,
                      "src": "17621:56:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17621:67:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10806,
                  "nodeType": "ExpressionStatement",
                  "src": "17621:67:47"
                }
              ]
            },
            "documentation": {
              "id": 10792,
              "nodeType": "StructuredDocumentation",
              "src": "17166:351:47",
              "text": "  @dev calls the `transferOwnershipOnComplianceContract` function on the Compliance contract\n  OwnerManager has to be set as owner on the Compliance smart contract to process this function\n  See {ICompliance-transferOwnershipOnComplianceContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "1096a7ec",
            "id": 10808,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10797,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10796,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "17601:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "17601:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "17601:9:47"
              }
            ],
            "name": "callTransferOwnershipOnComplianceContract",
            "nameLocation": "17531:41:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10794,
                  "mutability": "mutable",
                  "name": "_newOwner",
                  "nameLocation": "17581:9:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10808,
                  "src": "17573:17:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10793,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17573:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17572:19:47"
            },
            "returnParameters": {
              "id": 10798,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17611:0:47"
            },
            "scope": 10911,
            "src": "17522:173:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10826,
              "nodeType": "Block",
              "src": "18204:116:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10823,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10811,
                        "src": "18303:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10816,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10183,
                                "src": "18214:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IToken_$12234",
                                  "typeString": "contract IToken"
                                }
                              },
                              "id": 10818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "18220:16:47",
                              "memberName": "identityRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12011,
                              "src": "18214:22:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                                "typeString": "function () view external returns (contract IIdentityRegistry)"
                              }
                            },
                            "id": 10819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18214:24:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 10820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "18239:14:47",
                          "memberName": "topicsRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6618,
                          "src": "18214:39:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IClaimTopicsRegistry_$6444_$",
                            "typeString": "function () view external returns (contract IClaimTopicsRegistry)"
                          }
                        },
                        "id": 10821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18214:41:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IClaimTopicsRegistry_$6444",
                          "typeString": "contract IClaimTopicsRegistry"
                        }
                      },
                      "id": 10822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "18256:46:47",
                      "memberName": "transferOwnershipOnClaimTopicsRegistryContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6443,
                      "src": "18214:88:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18214:99:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10825,
                  "nodeType": "ExpressionStatement",
                  "src": "18214:99:47"
                }
              ]
            },
            "documentation": {
              "id": 10809,
              "nodeType": "StructuredDocumentation",
              "src": "17701:400:47",
              "text": "  @dev calls the `transferOwnershipOnClaimTopicsRegistryContract` function on the Claim Topics Registry contract\n  OwnerManager has to be set as owner on the Claim Topics registry smart contract to process this function\n  See {IClaimTopicsRegistry-transferOwnershipOnClaimTopicsRegistryContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "818ab8bd",
            "id": 10827,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10814,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10813,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "18194:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "18194:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "18194:9:47"
              }
            ],
            "name": "callTransferOwnershipOnClaimTopicsRegistryContract",
            "nameLocation": "18115:50:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10811,
                  "mutability": "mutable",
                  "name": "_newOwner",
                  "nameLocation": "18174:9:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10827,
                  "src": "18166:17:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10810,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18166:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18165:19:47"
            },
            "returnParameters": {
              "id": 10815,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18204:0:47"
            },
            "scope": 10911,
            "src": "18106:214:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10845,
              "nodeType": "Block",
              "src": "18826:113:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10842,
                        "name": "_newOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10830,
                        "src": "18922:9:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 10835,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10183,
                                "src": "18836:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IToken_$12234",
                                  "typeString": "contract IToken"
                                }
                              },
                              "id": 10837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "18842:16:47",
                              "memberName": "identityRegistry",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12011,
                              "src": "18836:22:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                                "typeString": "function () view external returns (contract IIdentityRegistry)"
                              }
                            },
                            "id": 10838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18836:24:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 10839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "18861:15:47",
                          "memberName": "issuersRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6611,
                          "src": "18836:40:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ITrustedIssuersRegistry_$6856_$",
                            "typeString": "function () view external returns (contract ITrustedIssuersRegistry)"
                          }
                        },
                        "id": 10840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18836:42:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ITrustedIssuersRegistry_$6856",
                          "typeString": "contract ITrustedIssuersRegistry"
                        }
                      },
                      "id": 10841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "18879:42:47",
                      "memberName": "transferOwnershipOnIssuersRegistryContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6855,
                      "src": "18836:85:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18836:96:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10844,
                  "nodeType": "ExpressionStatement",
                  "src": "18836:96:47"
                }
              ]
            },
            "documentation": {
              "id": 10828,
              "nodeType": "StructuredDocumentation",
              "src": "18326:401:47",
              "text": "  @dev calls the `transferOwnershipOnIssuersRegistryContract` function on the Trusted Issuers Registry contract\n  OwnerManager has to be set as owner on the Trusted Issuers registry smart contract to process this function\n  See {ITrustedIssuersRegistry-transferOwnershipOnIssuersRegistryContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "99884aab",
            "id": 10846,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10833,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10832,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "18816:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "18816:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "18816:9:47"
              }
            ],
            "name": "callTransferOwnershipOnIssuersRegistryContract",
            "nameLocation": "18741:46:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10830,
                  "mutability": "mutable",
                  "name": "_newOwner",
                  "nameLocation": "18796:9:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10846,
                  "src": "18788:17:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10829,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18788:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18787:19:47"
            },
            "returnParameters": {
              "id": 10834,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18826:0:47"
            },
            "scope": 10911,
            "src": "18732:207:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10860,
              "nodeType": "Block",
              "src": "19330:54:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10857,
                        "name": "_agent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10849,
                        "src": "19370:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 10854,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "19340:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10856,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "19346:23:47",
                      "memberName": "addAgentOnTokenContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12227,
                      "src": "19340:29:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19340:37:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10859,
                  "nodeType": "ExpressionStatement",
                  "src": "19340:37:47"
                }
              ]
            },
            "documentation": {
              "id": 10847,
              "nodeType": "StructuredDocumentation",
              "src": "18945:308:47",
              "text": "  @dev calls the `addAgentOnTokenContract` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-addAgentOnTokenContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "256ccc07",
            "id": 10861,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10852,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10851,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "19320:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "19320:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "19320:9:47"
              }
            ],
            "name": "callAddAgentOnTokenContract",
            "nameLocation": "19267:27:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10849,
                  "mutability": "mutable",
                  "name": "_agent",
                  "nameLocation": "19303:6:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10861,
                  "src": "19295:14:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10848,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19295:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19294:16:47"
            },
            "returnParameters": {
              "id": 10853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19330:0:47"
            },
            "scope": 10911,
            "src": "19258:126:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10875,
              "nodeType": "Block",
              "src": "19784:57:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10872,
                        "name": "_agent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10864,
                        "src": "19827:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 10869,
                        "name": "token",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10183,
                        "src": "19794:5:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IToken_$12234",
                          "typeString": "contract IToken"
                        }
                      },
                      "id": 10871,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "19800:26:47",
                      "memberName": "removeAgentOnTokenContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12233,
                      "src": "19794:32:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19794:40:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10874,
                  "nodeType": "ExpressionStatement",
                  "src": "19794:40:47"
                }
              ]
            },
            "documentation": {
              "id": 10862,
              "nodeType": "StructuredDocumentation",
              "src": "19390:314:47",
              "text": "  @dev calls the `removeAgentOnTokenContract` function on the token contract\n  OwnerManager has to be set as owner on the token smart contract to process this function\n  See {IToken-removeAgentOnTokenContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "28d7be34",
            "id": 10876,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10867,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10866,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "19774:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "19774:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "19774:9:47"
              }
            ],
            "name": "callRemoveAgentOnTokenContract",
            "nameLocation": "19718:30:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10865,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10864,
                  "mutability": "mutable",
                  "name": "_agent",
                  "nameLocation": "19757:6:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10876,
                  "src": "19749:14:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10863,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19749:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19748:16:47"
            },
            "returnParameters": {
              "id": 10868,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19784:0:47"
            },
            "scope": 10911,
            "src": "19709:132:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10892,
              "nodeType": "Block",
              "src": "20300:84:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10889,
                        "name": "_agent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10879,
                        "src": "20370:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 10884,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10183,
                            "src": "20310:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$12234",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 10886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20316:16:47",
                          "memberName": "identityRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12011,
                          "src": "20310:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                            "typeString": "function () view external returns (contract IIdentityRegistry)"
                          }
                        },
                        "id": 10887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20310:24:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                          "typeString": "contract IIdentityRegistry"
                        }
                      },
                      "id": 10888,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "20335:34:47",
                      "memberName": "addAgentOnIdentityRegistryContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6630,
                      "src": "20310:59:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20310:67:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10891,
                  "nodeType": "ExpressionStatement",
                  "src": "20310:67:47"
                }
              ]
            },
            "documentation": {
              "id": 10877,
              "nodeType": "StructuredDocumentation",
              "src": "19847:365:47",
              "text": "  @dev calls the `addAgentOnIdentityRegistryContract` function on the Identity Registry contract\n  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n  See {IIdentityRegistry-addAgentOnIdentityRegistryContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "85cef608",
            "id": 10893,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10882,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10881,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "20290:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "20290:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "20290:9:47"
              }
            ],
            "name": "callAddAgentOnIdentityRegistryContract",
            "nameLocation": "20226:38:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10880,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10879,
                  "mutability": "mutable",
                  "name": "_agent",
                  "nameLocation": "20273:6:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10893,
                  "src": "20265:14:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10878,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20265:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20264:16:47"
            },
            "returnParameters": {
              "id": 10883,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20300:0:47"
            },
            "scope": 10911,
            "src": "20217:167:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10909,
              "nodeType": "Block",
              "src": "20852:87:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 10906,
                        "name": "_agent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10896,
                        "src": "20925:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "id": 10901,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10183,
                            "src": "20862:5:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IToken_$12234",
                              "typeString": "contract IToken"
                            }
                          },
                          "id": 10903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20868:16:47",
                          "memberName": "identityRegistry",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12011,
                          "src": "20862:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IIdentityRegistry_$6637_$",
                            "typeString": "function () view external returns (contract IIdentityRegistry)"
                          }
                        },
                        "id": 10904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20862:24:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                          "typeString": "contract IIdentityRegistry"
                        }
                      },
                      "id": 10905,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "20887:37:47",
                      "memberName": "removeAgentOnIdentityRegistryContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6636,
                      "src": "20862:62:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 10907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20862:70:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10908,
                  "nodeType": "ExpressionStatement",
                  "src": "20862:70:47"
                }
              ]
            },
            "documentation": {
              "id": 10894,
              "nodeType": "StructuredDocumentation",
              "src": "20390:371:47",
              "text": "  @dev calls the `removeAgentOnIdentityRegistryContract` function on the Identity Registry contract\n  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function\n  See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}.\n  Requires that msg.sender is an Admin of the OwnerManager contract"
            },
            "functionSelector": "757d467f",
            "id": 10910,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 10899,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 10898,
                  "name": "onlyAdmin",
                  "nameLocations": [
                    "20842:9:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 10972,
                  "src": "20842:9:47"
                },
                "nodeType": "ModifierInvocation",
                "src": "20842:9:47"
              }
            ],
            "name": "callRemoveAgentOnIdentityRegistryContract",
            "nameLocation": "20775:41:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10896,
                  "mutability": "mutable",
                  "name": "_agent",
                  "nameLocation": "20825:6:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 10910,
                  "src": "20817:14:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 10895,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20817:7:47",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20816:16:47"
            },
            "returnParameters": {
              "id": 10900,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20852:0:47"
            },
            "scope": 10911,
            "src": "20766:173:47",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 10912,
        "src": "1490:19451:47",
        "usedErrors": []
      }
    ],
    "src": "1093:19849:47"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.398Z",
  "devdoc": {
    "events": {
      "ComplianceInteraction(address,bytes4)": {
        "details": "Event emitted for each executed interaction with the compliance contract. For gas efficiency, only the interaction calldata selector (first 4 bytes) is included in the event. For interactions without calldata or whose calldata is shorter than 4 bytes, the selector will be `0`."
      }
    },
    "kind": "dev",
    "methods": {
      "callAddAgentOnIdentityRegistryContract(address)": {
        "details": "calls the `addAgentOnIdentityRegistryContract` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-addAgentOnIdentityRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callAddAgentOnTokenContract(address)": {
        "details": "calls the `addAgentOnTokenContract` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-addAgentOnTokenContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callAddClaimTopic(uint256,address)": {
        "details": "calls the `addClaimTopic` function on the Claim Topics Registry contract  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function  See {IClaimTopicsRegistry-addClaimTopic}.  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callAddTrustedIssuer(address,uint256[],address)": {
        "details": "calls the `addTrustedIssuer` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function  See {ITrustedIssuersRegistry-addTrustedIssuer}.  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callComplianceFunction(bytes,address)": {
        "details": "calls any onlyOwner function available on the compliance contract  OwnerManager has to be set as owner on the compliance smart contract to process this function  Requires that `_onchainID` is set as ComplianceManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callRemoveAgentOnIdentityRegistryContract(address)": {
        "details": "calls the `removeAgentOnIdentityRegistryContract` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-removeAgentOnIdentityRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callRemoveAgentOnTokenContract(address)": {
        "details": "calls the `removeAgentOnTokenContract` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-removeAgentOnTokenContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callRemoveClaimTopic(uint256,address)": {
        "details": "calls the `removeClaimTopic` function on the Claim Topics Registry contract  OwnerManager has to be set as owner on the Claim Topics Registry smart contract to process this function  See {IClaimTopicsRegistry-removeClaimTopic}.  Requires that `_onchainID` is set as ClaimRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callRemoveTrustedIssuer(address,address)": {
        "details": "calls the `removeTrustedIssuer` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function  See {ITrustedIssuersRegistry-removeTrustedIssuer}.  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callSetClaimTopicsRegistry(address,address)": {
        "details": "calls the `setClaimTopicsRegistry` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-setClaimTopicsRegistry}.  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callSetCompliance(address,address)": {
        "details": "calls the `setCompliance` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setCompliance}.  Requires that `_onchainID` is set as ComplianceSetter on the OwnerManager contract  Requires that msg.sender is a MANAGEMENT KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callSetIdentityRegistry(address,address)": {
        "details": "calls the `setIdentityRegistry` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setIdentityRegistry}.  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callSetTokenName(string,address)": {
        "details": "calls the `setName` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setName}.  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callSetTokenOnchainID(address,address)": {
        "details": "calls the `setOnchainID` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setOnchainID}.  Requires that `_tokenOnchainID` is set as TokenInfoManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callSetTokenSymbol(string,address)": {
        "details": "calls the `setSymbol` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-setSymbol}.  Requires that `_onchainID` is set as TokenInfoManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callSetTrustedIssuersRegistry(address,address)": {
        "details": "calls the `setTrustedIssuersRegistry` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-setTrustedIssuersRegistry}.  Requires that `_onchainID` is set as RegistryAddressSetter on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "callTransferOwnershipOnClaimTopicsRegistryContract(address)": {
        "details": "calls the `transferOwnershipOnClaimTopicsRegistryContract` function on the Claim Topics Registry contract  OwnerManager has to be set as owner on the Claim Topics registry smart contract to process this function  See {IClaimTopicsRegistry-transferOwnershipOnClaimTopicsRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callTransferOwnershipOnComplianceContract(address)": {
        "details": "calls the `transferOwnershipOnComplianceContract` function on the Compliance contract  OwnerManager has to be set as owner on the Compliance smart contract to process this function  See {ICompliance-transferOwnershipOnComplianceContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callTransferOwnershipOnIdentityRegistryContract(address)": {
        "details": "calls the `transferOwnershipOnIdentityRegistryContract` function on the Identity Registry contract  OwnerManager has to be set as owner on the Identity Registry smart contract to process this function  See {IIdentityRegistry-transferOwnershipOnIdentityRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callTransferOwnershipOnIssuersRegistryContract(address)": {
        "details": "calls the `transferOwnershipOnIssuersRegistryContract` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers registry smart contract to process this function  See {ITrustedIssuersRegistry-transferOwnershipOnIssuersRegistryContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callTransferOwnershipOnTokenContract(address)": {
        "details": "calls the `transferOwnershipOnTokenContract` function on the token contract  OwnerManager has to be set as owner on the token smart contract to process this function  See {IToken-transferOwnershipOnTokenContract}.  Requires that msg.sender is an Admin of the OwnerManager contract"
      },
      "callUpdateIssuerClaimTopics(address,uint256[],address)": {
        "details": "calls the `updateIssuerClaimTopics` function on the Trusted Issuers Registry contract  OwnerManager has to be set as owner on the Trusted Issuers Registry smart contract to process this function  See {ITrustedIssuersRegistry-updateIssuerClaimTopics}.  Requires that `_onchainID` is set as IssuersRegistryManager on the OwnerManager contract  Requires that msg.sender is an ACTION KEY on `_onchainID`",
        "params": {
          "_onchainID": "the _onchainID contract of the caller, e.g. \"i call this function and i am Bob\""
        }
      },
      "constructor": {
        "details": "the constructor initiates the OwnerManager contract  and sets msg.sender as owner of the contract",
        "params": {
          "_token": "the token managed by this OwnerManager contract"
        }
      },
      "isClaimRegistryManager(address)": {
        "details": "ClaimRegistryManager Role _claimRegistryManager"
      },
      "isComplianceManager(address)": {
        "details": "ComplianceManager Role _complianceManager"
      },
      "isComplianceSetter(address)": {
        "details": "ComplianceSetter Role _complianceSetter"
      },
      "isIssuersRegistryManager(address)": {
        "details": "IssuersRegistryManager Role _issuersRegistryManager"
      },
      "isOwnerAdmin(address)": {
        "details": "OwnerAdmin Role _ownerAdmin"
      },
      "isRegistryAddressSetter(address)": {
        "details": "RegistryAddressSetter Role _registryAddressSetter"
      },
      "isTokenInfoManager(address)": {
        "details": "TokenInfoManager Role _tokenInfoManager"
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "stateVariables": {
      "token": {
        "details": "the token that is managed by this OwnerManager Contract"
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}