#
# Autogenerated by Thrift Compiler (0.11.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py
#

from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException
from thrift.protocol.TProtocol import TProtocolException
from thrift.TRecursive import fix_spec

import sys
import codechecker_api_shared.ttypes

from thrift.transport import TTransport
all_structs = []


class DetectionStatus(object):
    """
    Detection status is an automated system which assigns a value to every
    report during the storage process.
    """
    NEW = 0
    RESOLVED = 1
    UNRESOLVED = 2
    REOPENED = 3
    OFF = 4
    UNAVAILABLE = 5

    _VALUES_TO_NAMES = {
        0: "NEW",
        1: "RESOLVED",
        2: "UNRESOLVED",
        3: "REOPENED",
        4: "OFF",
        5: "UNAVAILABLE",
    }

    _NAMES_TO_VALUES = {
        "NEW": 0,
        "RESOLVED": 1,
        "UNRESOLVED": 2,
        "REOPENED": 3,
        "OFF": 4,
        "UNAVAILABLE": 5,
    }


class DiffType(object):
    NEW = 0
    RESOLVED = 1
    UNRESOLVED = 2

    _VALUES_TO_NAMES = {
        0: "NEW",
        1: "RESOLVED",
        2: "UNRESOLVED",
    }

    _NAMES_TO_VALUES = {
        "NEW": 0,
        "RESOLVED": 1,
        "UNRESOLVED": 2,
    }


class Encoding(object):
    DEFAULT = 0
    BASE64 = 1

    _VALUES_TO_NAMES = {
        0: "DEFAULT",
        1: "BASE64",
    }

    _NAMES_TO_VALUES = {
        "DEFAULT": 0,
        "BASE64": 1,
    }


class Order(object):
    ASC = 0
    DESC = 1

    _VALUES_TO_NAMES = {
        0: "ASC",
        1: "DESC",
    }

    _NAMES_TO_VALUES = {
        "ASC": 0,
        "DESC": 1,
    }


class ReportStatus(object):
    """
    Report status can show the current status of the report
    that depends on the review and thedetection status.
    """
    OUTSTANDING = 0
    CLOSED = 1

    _VALUES_TO_NAMES = {
        0: "OUTSTANDING",
        1: "CLOSED",
    }

    _NAMES_TO_VALUES = {
        "OUTSTANDING": 0,
        "CLOSED": 1,
    }


class ReviewStatus(object):
    """
    Review status is a feature which allows a user to assign one of these
    statuses to a particular Report.
    """
    UNREVIEWED = 0
    CONFIRMED = 1
    FALSE_POSITIVE = 2
    INTENTIONAL = 3

    _VALUES_TO_NAMES = {
        0: "UNREVIEWED",
        1: "CONFIRMED",
        2: "FALSE_POSITIVE",
        3: "INTENTIONAL",
    }

    _NAMES_TO_VALUES = {
        "UNREVIEWED": 0,
        "CONFIRMED": 1,
        "FALSE_POSITIVE": 2,
        "INTENTIONAL": 3,
    }


class Severity(object):
    """
    The severity of the reported issue. This list is generated from CodeChecker's
    database on analyzer checkers.
    """
    UNSPECIFIED = 0
    STYLE = 10
    LOW = 20
    MEDIUM = 30
    HIGH = 40
    CRITICAL = 50

    _VALUES_TO_NAMES = {
        0: "UNSPECIFIED",
        10: "STYLE",
        20: "LOW",
        30: "MEDIUM",
        40: "HIGH",
        50: "CRITICAL",
    }

    _NAMES_TO_VALUES = {
        "UNSPECIFIED": 0,
        "STYLE": 10,
        "LOW": 20,
        "MEDIUM": 30,
        "HIGH": 40,
        "CRITICAL": 50,
    }


class SortType(object):
    FILENAME = 0
    CHECKER_NAME = 1
    SEVERITY = 2
    REVIEW_STATUS = 3
    DETECTION_STATUS = 4
    BUG_PATH_LENGTH = 5
    TIMESTAMP = 6
    TESTCASE = 7

    _VALUES_TO_NAMES = {
        0: "FILENAME",
        1: "CHECKER_NAME",
        2: "SEVERITY",
        3: "REVIEW_STATUS",
        4: "DETECTION_STATUS",
        5: "BUG_PATH_LENGTH",
        6: "TIMESTAMP",
        7: "TESTCASE",
    }

    _NAMES_TO_VALUES = {
        "FILENAME": 0,
        "CHECKER_NAME": 1,
        "SEVERITY": 2,
        "REVIEW_STATUS": 3,
        "DETECTION_STATUS": 4,
        "BUG_PATH_LENGTH": 5,
        "TIMESTAMP": 6,
        "TESTCASE": 7,
    }


class RunSortType(object):
    NAME = 0
    UNRESOLVED_REPORTS = 1
    DATE = 2
    DURATION = 3
    CC_VERSION = 4

    _VALUES_TO_NAMES = {
        0: "NAME",
        1: "UNRESOLVED_REPORTS",
        2: "DATE",
        3: "DURATION",
        4: "CC_VERSION",
    }

    _NAMES_TO_VALUES = {
        "NAME": 0,
        "UNRESOLVED_REPORTS": 1,
        "DATE": 2,
        "DURATION": 3,
        "CC_VERSION": 4,
    }


class StoreLimitKind(object):
    FAILURE_ZIP_SIZE = 0
    COMPILATION_DATABASE_SIZE = 1

    _VALUES_TO_NAMES = {
        0: "FAILURE_ZIP_SIZE",
        1: "COMPILATION_DATABASE_SIZE",
    }

    _NAMES_TO_VALUES = {
        "FAILURE_ZIP_SIZE": 0,
        "COMPILATION_DATABASE_SIZE": 1,
    }


class ExtendedReportDataType(object):
    NOTE = 0
    MACRO = 10
    FIXIT = 20

    _VALUES_TO_NAMES = {
        0: "NOTE",
        10: "MACRO",
        20: "FIXIT",
    }

    _NAMES_TO_VALUES = {
        "NOTE": 0,
        "MACRO": 10,
        "FIXIT": 20,
    }


class CommentKind(object):
    USER = 0
    SYSTEM = 1

    _VALUES_TO_NAMES = {
        0: "USER",
        1: "SYSTEM",
    }

    _NAMES_TO_VALUES = {
        "USER": 0,
        "SYSTEM": 1,
    }


class ReviewStatusRuleSortType(object):
    REPORT_HASH = 0
    STATUS = 1
    AUTHOR = 2
    DATE = 3
    ASSOCIATED_REPORTS_COUNT = 4

    _VALUES_TO_NAMES = {
        0: "REPORT_HASH",
        1: "STATUS",
        2: "AUTHOR",
        3: "DATE",
        4: "ASSOCIATED_REPORTS_COUNT",
    }

    _NAMES_TO_VALUES = {
        "REPORT_HASH": 0,
        "STATUS": 1,
        "AUTHOR": 2,
        "DATE": 3,
        "ASSOCIATED_REPORTS_COUNT": 4,
    }


class Pair(object):
    """
    Attributes:
     - first
     - second
    """


    def __init__(self, first=None, second=None,):
        self.first = first
        self.second = second

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.first = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.second = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('Pair')
        if self.first is not None:
            oprot.writeFieldBegin('first', TType.STRING, 1)
            oprot.writeString(self.first.encode('utf-8') if sys.version_info[0] == 2 else self.first)
            oprot.writeFieldEnd()
        if self.second is not None:
            oprot.writeFieldBegin('second', TType.STRING, 2)
            oprot.writeString(self.second.encode('utf-8') if sys.version_info[0] == 2 else self.second)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class SourceFileData(object):
    """
    Attributes:
     - fileId
     - filePath
     - fileContent
     - hasBlameInfo
     - remoteUrl
     - trackingBranch
    """


    def __init__(self, fileId=None, filePath=None, fileContent=None, hasBlameInfo=None, remoteUrl=None, trackingBranch=None,):
        self.fileId = fileId
        self.filePath = filePath
        self.fileContent = fileContent
        self.hasBlameInfo = hasBlameInfo
        self.remoteUrl = remoteUrl
        self.trackingBranch = trackingBranch

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.fileContent = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.BOOL:
                    self.hasBlameInfo = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.remoteUrl = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.trackingBranch = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('SourceFileData')
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 1)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 2)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        if self.fileContent is not None:
            oprot.writeFieldBegin('fileContent', TType.STRING, 3)
            oprot.writeString(self.fileContent.encode('utf-8') if sys.version_info[0] == 2 else self.fileContent)
            oprot.writeFieldEnd()
        if self.hasBlameInfo is not None:
            oprot.writeFieldBegin('hasBlameInfo', TType.BOOL, 4)
            oprot.writeBool(self.hasBlameInfo)
            oprot.writeFieldEnd()
        if self.remoteUrl is not None:
            oprot.writeFieldBegin('remoteUrl', TType.STRING, 5)
            oprot.writeString(self.remoteUrl.encode('utf-8') if sys.version_info[0] == 2 else self.remoteUrl)
            oprot.writeFieldEnd()
        if self.trackingBranch is not None:
            oprot.writeFieldBegin('trackingBranch', TType.STRING, 6)
            oprot.writeString(self.trackingBranch.encode('utf-8') if sys.version_info[0] == 2 else self.trackingBranch)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class SortMode(object):
    """
    Attributes:
     - type
     - ord
    """


    def __init__(self, type=None, ord=None,):
        self.type = type
        self.ord = ord

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.ord = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('SortMode')
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 1)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.ord is not None:
            oprot.writeFieldBegin('ord', TType.I32, 2)
            oprot.writeI32(self.ord)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunSortMode(object):
    """
    Attributes:
     - type
     - ord
    """


    def __init__(self, type=None, ord=None,):
        self.type = type
        self.ord = ord

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.ord = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunSortMode')
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 1)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.ord is not None:
            oprot.writeFieldBegin('ord', TType.I32, 2)
            oprot.writeI32(self.ord)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BugPathEvent(object):
    """
    Attributes:
     - startLine
     - startCol
     - endLine
     - endCol
     - msg
     - fileId
     - filePath
    """


    def __init__(self, startLine=None, startCol=None, endLine=None, endCol=None, msg=None, fileId=None, filePath=None,):
        self.startLine = startLine
        self.startCol = startCol
        self.endLine = endLine
        self.endCol = endCol
        self.msg = msg
        self.fileId = fileId
        self.filePath = filePath

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.startLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.startCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.endLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.endCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.msg = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BugPathEvent')
        if self.startLine is not None:
            oprot.writeFieldBegin('startLine', TType.I64, 1)
            oprot.writeI64(self.startLine)
            oprot.writeFieldEnd()
        if self.startCol is not None:
            oprot.writeFieldBegin('startCol', TType.I64, 2)
            oprot.writeI64(self.startCol)
            oprot.writeFieldEnd()
        if self.endLine is not None:
            oprot.writeFieldBegin('endLine', TType.I64, 3)
            oprot.writeI64(self.endLine)
            oprot.writeFieldEnd()
        if self.endCol is not None:
            oprot.writeFieldBegin('endCol', TType.I64, 4)
            oprot.writeI64(self.endCol)
            oprot.writeFieldEnd()
        if self.msg is not None:
            oprot.writeFieldBegin('msg', TType.STRING, 5)
            oprot.writeString(self.msg.encode('utf-8') if sys.version_info[0] == 2 else self.msg)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 6)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 7)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BugPathPos(object):
    """
    Attributes:
     - startLine
     - startCol
     - endLine
     - endCol
     - fileId
     - filePath
    """


    def __init__(self, startLine=None, startCol=None, endLine=None, endCol=None, fileId=None, filePath=None,):
        self.startLine = startLine
        self.startCol = startCol
        self.endLine = endLine
        self.endCol = endCol
        self.fileId = fileId
        self.filePath = filePath

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.startLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.startCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.endLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.endCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BugPathPos')
        if self.startLine is not None:
            oprot.writeFieldBegin('startLine', TType.I64, 1)
            oprot.writeI64(self.startLine)
            oprot.writeFieldEnd()
        if self.startCol is not None:
            oprot.writeFieldBegin('startCol', TType.I64, 2)
            oprot.writeI64(self.startCol)
            oprot.writeFieldEnd()
        if self.endLine is not None:
            oprot.writeFieldBegin('endLine', TType.I64, 3)
            oprot.writeI64(self.endLine)
            oprot.writeFieldEnd()
        if self.endCol is not None:
            oprot.writeFieldBegin('endCol', TType.I64, 4)
            oprot.writeI64(self.endCol)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 5)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 6)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ExtendedReportData(object):
    """
    Attributes:
     - type
     - startLine
     - startCol
     - endLine
     - endCol
     - message
     - fileId
     - filePath
    """


    def __init__(self, type=None, startLine=None, startCol=None, endLine=None, endCol=None, message=None, fileId=None, filePath=None,):
        self.type = type
        self.startLine = startLine
        self.startCol = startCol
        self.endLine = endLine
        self.endCol = endCol
        self.message = message
        self.fileId = fileId
        self.filePath = filePath

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.startLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.startCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.endLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.endCol = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.message = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.filePath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ExtendedReportData')
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 1)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.startLine is not None:
            oprot.writeFieldBegin('startLine', TType.I64, 2)
            oprot.writeI64(self.startLine)
            oprot.writeFieldEnd()
        if self.startCol is not None:
            oprot.writeFieldBegin('startCol', TType.I64, 3)
            oprot.writeI64(self.startCol)
            oprot.writeFieldEnd()
        if self.endLine is not None:
            oprot.writeFieldBegin('endLine', TType.I64, 4)
            oprot.writeI64(self.endLine)
            oprot.writeFieldEnd()
        if self.endCol is not None:
            oprot.writeFieldBegin('endCol', TType.I64, 5)
            oprot.writeI64(self.endCol)
            oprot.writeFieldEnd()
        if self.message is not None:
            oprot.writeFieldBegin('message', TType.STRING, 6)
            oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 7)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.filePath is not None:
            oprot.writeFieldBegin('filePath', TType.STRING, 8)
            oprot.writeString(self.filePath.encode('utf-8') if sys.version_info[0] == 2 else self.filePath)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportDetails(object):
    """
    Attributes:
     - pathEvents
     - executionPath
     - extendedData
     - comments
    """


    def __init__(self, pathEvents=None, executionPath=None, extendedData=None, comments=None,):
        self.pathEvents = pathEvents
        self.executionPath = executionPath
        self.extendedData = extendedData
        self.comments = comments

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.pathEvents = []
                    (_etype3, _size0) = iprot.readListBegin()
                    for _i4 in range(_size0):
                        _elem5 = BugPathEvent()
                        _elem5.read(iprot)
                        self.pathEvents.append(_elem5)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.executionPath = []
                    (_etype9, _size6) = iprot.readListBegin()
                    for _i10 in range(_size6):
                        _elem11 = BugPathPos()
                        _elem11.read(iprot)
                        self.executionPath.append(_elem11)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.extendedData = []
                    (_etype15, _size12) = iprot.readListBegin()
                    for _i16 in range(_size12):
                        _elem17 = ExtendedReportData()
                        _elem17.read(iprot)
                        self.extendedData.append(_elem17)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.comments = []
                    (_etype21, _size18) = iprot.readListBegin()
                    for _i22 in range(_size18):
                        _elem23 = CommentData()
                        _elem23.read(iprot)
                        self.comments.append(_elem23)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportDetails')
        if self.pathEvents is not None:
            oprot.writeFieldBegin('pathEvents', TType.LIST, 1)
            oprot.writeListBegin(TType.STRUCT, len(self.pathEvents))
            for iter24 in self.pathEvents:
                iter24.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.executionPath is not None:
            oprot.writeFieldBegin('executionPath', TType.LIST, 2)
            oprot.writeListBegin(TType.STRUCT, len(self.executionPath))
            for iter25 in self.executionPath:
                iter25.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.extendedData is not None:
            oprot.writeFieldBegin('extendedData', TType.LIST, 3)
            oprot.writeListBegin(TType.STRUCT, len(self.extendedData))
            for iter26 in self.extendedData:
                iter26.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.comments is not None:
            oprot.writeFieldBegin('comments', TType.LIST, 4)
            oprot.writeListBegin(TType.STRUCT, len(self.comments))
            for iter27 in self.comments:
                iter27.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class AnalyzerStatistics(object):
    """
    Attributes:
     - version
     - failed
     - successful
     - failedFilePaths
    """


    def __init__(self, version=None, failed=None, successful=None, failedFilePaths=None,):
        self.version = version
        self.failed = failed
        self.successful = successful
        self.failedFilePaths = failedFilePaths

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.version = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.failed = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.successful = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.failedFilePaths = []
                    (_etype31, _size28) = iprot.readListBegin()
                    for _i32 in range(_size28):
                        _elem33 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.failedFilePaths.append(_elem33)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('AnalyzerStatistics')
        if self.version is not None:
            oprot.writeFieldBegin('version', TType.STRING, 1)
            oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version)
            oprot.writeFieldEnd()
        if self.failed is not None:
            oprot.writeFieldBegin('failed', TType.I64, 2)
            oprot.writeI64(self.failed)
            oprot.writeFieldEnd()
        if self.successful is not None:
            oprot.writeFieldBegin('successful', TType.I64, 3)
            oprot.writeI64(self.successful)
            oprot.writeFieldEnd()
        if self.failedFilePaths is not None:
            oprot.writeFieldBegin('failedFilePaths', TType.LIST, 4)
            oprot.writeListBegin(TType.STRING, len(self.failedFilePaths))
            for iter34 in self.failedFilePaths:
                oprot.writeString(iter34.encode('utf-8') if sys.version_info[0] == 2 else iter34)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunData(object):
    """
    Attributes:
     - runId
     - runDate
     - name
     - duration
     - resultCount
     - runCmd
     - detectionStatusCount
     - versionTag
     - codeCheckerVersion
     - analyzerStatistics
     - description
    """


    def __init__(self, runId=None, runDate=None, name=None, duration=None, resultCount=None, runCmd=None, detectionStatusCount=None, versionTag=None, codeCheckerVersion=None, analyzerStatistics=None, description=None,):
        self.runId = runId
        self.runDate = runDate
        self.name = name
        self.duration = duration
        self.resultCount = resultCount
        self.runCmd = runCmd
        self.detectionStatusCount = detectionStatusCount
        self.versionTag = versionTag
        self.codeCheckerVersion = codeCheckerVersion
        self.analyzerStatistics = analyzerStatistics
        self.description = description

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.runDate = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.duration = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.resultCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.runCmd = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.MAP:
                    self.detectionStatusCount = {}
                    (_ktype36, _vtype37, _size35) = iprot.readMapBegin()
                    for _i39 in range(_size35):
                        _key40 = iprot.readI32()
                        _val41 = iprot.readI32()
                        self.detectionStatusCount[_key40] = _val41
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.versionTag = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.STRING:
                    self.codeCheckerVersion = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.MAP:
                    self.analyzerStatistics = {}
                    (_ktype43, _vtype44, _size42) = iprot.readMapBegin()
                    for _i46 in range(_size42):
                        _key47 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val48 = AnalyzerStatistics()
                        _val48.read(iprot)
                        self.analyzerStatistics[_key47] = _val48
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRING:
                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunData')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.runDate is not None:
            oprot.writeFieldBegin('runDate', TType.STRING, 2)
            oprot.writeString(self.runDate.encode('utf-8') if sys.version_info[0] == 2 else self.runDate)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 3)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.duration is not None:
            oprot.writeFieldBegin('duration', TType.I64, 4)
            oprot.writeI64(self.duration)
            oprot.writeFieldEnd()
        if self.resultCount is not None:
            oprot.writeFieldBegin('resultCount', TType.I64, 5)
            oprot.writeI64(self.resultCount)
            oprot.writeFieldEnd()
        if self.runCmd is not None:
            oprot.writeFieldBegin('runCmd', TType.STRING, 6)
            oprot.writeString(self.runCmd.encode('utf-8') if sys.version_info[0] == 2 else self.runCmd)
            oprot.writeFieldEnd()
        if self.detectionStatusCount is not None:
            oprot.writeFieldBegin('detectionStatusCount', TType.MAP, 7)
            oprot.writeMapBegin(TType.I32, TType.I32, len(self.detectionStatusCount))
            for kiter49, viter50 in self.detectionStatusCount.items():
                oprot.writeI32(kiter49)
                oprot.writeI32(viter50)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.versionTag is not None:
            oprot.writeFieldBegin('versionTag', TType.STRING, 8)
            oprot.writeString(self.versionTag.encode('utf-8') if sys.version_info[0] == 2 else self.versionTag)
            oprot.writeFieldEnd()
        if self.codeCheckerVersion is not None:
            oprot.writeFieldBegin('codeCheckerVersion', TType.STRING, 9)
            oprot.writeString(self.codeCheckerVersion.encode('utf-8') if sys.version_info[0] == 2 else self.codeCheckerVersion)
            oprot.writeFieldEnd()
        if self.analyzerStatistics is not None:
            oprot.writeFieldBegin('analyzerStatistics', TType.MAP, 10)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.analyzerStatistics))
            for kiter51, viter52 in self.analyzerStatistics.items():
                oprot.writeString(kiter51.encode('utf-8') if sys.version_info[0] == 2 else kiter51)
                viter52.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 11)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunHistoryData(object):
    """
    Attributes:
     - runId
     - runName
     - versionTag
     - user
     - time
     - id
     - checkCommand
     - codeCheckerVersion
     - analyzerStatistics
     - description
    """


    def __init__(self, runId=None, runName=None, versionTag=None, user=None, time=None, id=None, checkCommand=None, codeCheckerVersion=None, analyzerStatistics=None, description=None,):
        self.runId = runId
        self.runName = runName
        self.versionTag = versionTag
        self.user = user
        self.time = time
        self.id = id
        self.checkCommand = checkCommand
        self.codeCheckerVersion = codeCheckerVersion
        self.analyzerStatistics = analyzerStatistics
        self.description = description

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.runName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.versionTag = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.user = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.time = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.checkCommand = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.codeCheckerVersion = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.MAP:
                    self.analyzerStatistics = {}
                    (_ktype54, _vtype55, _size53) = iprot.readMapBegin()
                    for _i57 in range(_size53):
                        _key58 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val59 = AnalyzerStatistics()
                        _val59.read(iprot)
                        self.analyzerStatistics[_key58] = _val59
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRING:
                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunHistoryData')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.runName is not None:
            oprot.writeFieldBegin('runName', TType.STRING, 2)
            oprot.writeString(self.runName.encode('utf-8') if sys.version_info[0] == 2 else self.runName)
            oprot.writeFieldEnd()
        if self.versionTag is not None:
            oprot.writeFieldBegin('versionTag', TType.STRING, 3)
            oprot.writeString(self.versionTag.encode('utf-8') if sys.version_info[0] == 2 else self.versionTag)
            oprot.writeFieldEnd()
        if self.user is not None:
            oprot.writeFieldBegin('user', TType.STRING, 4)
            oprot.writeString(self.user.encode('utf-8') if sys.version_info[0] == 2 else self.user)
            oprot.writeFieldEnd()
        if self.time is not None:
            oprot.writeFieldBegin('time', TType.STRING, 5)
            oprot.writeString(self.time.encode('utf-8') if sys.version_info[0] == 2 else self.time)
            oprot.writeFieldEnd()
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 6)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.checkCommand is not None:
            oprot.writeFieldBegin('checkCommand', TType.STRING, 7)
            oprot.writeString(self.checkCommand.encode('utf-8') if sys.version_info[0] == 2 else self.checkCommand)
            oprot.writeFieldEnd()
        if self.codeCheckerVersion is not None:
            oprot.writeFieldBegin('codeCheckerVersion', TType.STRING, 8)
            oprot.writeString(self.codeCheckerVersion.encode('utf-8') if sys.version_info[0] == 2 else self.codeCheckerVersion)
            oprot.writeFieldEnd()
        if self.analyzerStatistics is not None:
            oprot.writeFieldBegin('analyzerStatistics', TType.MAP, 9)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.analyzerStatistics))
            for kiter60, viter61 in self.analyzerStatistics.items():
                oprot.writeString(kiter60.encode('utf-8') if sys.version_info[0] == 2 else kiter60)
                viter61.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 11)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunHistoryFilter(object):
    """
    Members of this struct are interpreted in "AND" relation with each other.
    Between the list elements there is "OR" relation.
    If exactMatch field is True it will use exact match for run names.

    Attributes:
     - tagNames
     - tagIds
     - stored
    """


    def __init__(self, tagNames=None, tagIds=None, stored=None,):
        self.tagNames = tagNames
        self.tagIds = tagIds
        self.stored = stored

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.tagNames = []
                    (_etype65, _size62) = iprot.readListBegin()
                    for _i66 in range(_size62):
                        _elem67 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.tagNames.append(_elem67)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.tagIds = []
                    (_etype71, _size68) = iprot.readListBegin()
                    for _i72 in range(_size68):
                        _elem73 = iprot.readI64()
                        self.tagIds.append(_elem73)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRUCT:
                    self.stored = DateInterval()
                    self.stored.read(iprot)
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunHistoryFilter')
        if self.tagNames is not None:
            oprot.writeFieldBegin('tagNames', TType.LIST, 1)
            oprot.writeListBegin(TType.STRING, len(self.tagNames))
            for iter74 in self.tagNames:
                oprot.writeString(iter74.encode('utf-8') if sys.version_info[0] == 2 else iter74)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.tagIds is not None:
            oprot.writeFieldBegin('tagIds', TType.LIST, 2)
            oprot.writeListBegin(TType.I64, len(self.tagIds))
            for iter75 in self.tagIds:
                oprot.writeI64(iter75)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.stored is not None:
            oprot.writeFieldBegin('stored', TType.STRUCT, 3)
            self.stored.write(oprot)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunTagCount(object):
    """
    Attributes:
     - time
     - name
     - count
     - id
     - runName
     - runId
    """


    def __init__(self, time=None, name=None, count=None, id=None, runName=None, runId=None,):
        self.time = time
        self.name = name
        self.count = count
        self.id = id
        self.runName = runName
        self.runId = runId

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.time = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.count = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.runName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunTagCount')
        if self.time is not None:
            oprot.writeFieldBegin('time', TType.STRING, 1)
            oprot.writeString(self.time.encode('utf-8') if sys.version_info[0] == 2 else self.time)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.count is not None:
            oprot.writeFieldBegin('count', TType.I64, 3)
            oprot.writeI64(self.count)
            oprot.writeFieldEnd()
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 4)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.runName is not None:
            oprot.writeFieldBegin('runName', TType.STRING, 5)
            oprot.writeString(self.runName.encode('utf-8') if sys.version_info[0] == 2 else self.runName)
            oprot.writeFieldEnd()
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 6)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReviewData(object):
    """
    Attributes:
     - status
     - comment
     - author
     - date
     - isInSource
    """


    def __init__(self, status=None, comment=None, author=None, date=None, isInSource=None,):
        self.status = status
        self.comment = comment
        self.author = author
        self.date = date
        self.isInSource = isInSource

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.status = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.comment = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.author = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.date = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.BOOL:
                    self.isInSource = iprot.readBool()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReviewData')
        if self.status is not None:
            oprot.writeFieldBegin('status', TType.I32, 1)
            oprot.writeI32(self.status)
            oprot.writeFieldEnd()
        if self.comment is not None:
            oprot.writeFieldBegin('comment', TType.STRING, 2)
            oprot.writeString(self.comment.encode('utf-8') if sys.version_info[0] == 2 else self.comment)
            oprot.writeFieldEnd()
        if self.author is not None:
            oprot.writeFieldBegin('author', TType.STRING, 3)
            oprot.writeString(self.author.encode('utf-8') if sys.version_info[0] == 2 else self.author)
            oprot.writeFieldEnd()
        if self.date is not None:
            oprot.writeFieldBegin('date', TType.STRING, 4)
            oprot.writeString(self.date.encode('utf-8') if sys.version_info[0] == 2 else self.date)
            oprot.writeFieldEnd()
        if self.isInSource is not None:
            oprot.writeFieldBegin('isInSource', TType.BOOL, 5)
            oprot.writeBool(self.isInSource)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReviewStatusRuleSortMode(object):
    """
    Attributes:
     - type
     - ord
    """


    def __init__(self, type=None, ord=None,):
        self.type = type
        self.ord = ord

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.ord = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReviewStatusRuleSortMode')
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 1)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.ord is not None:
            oprot.writeFieldBegin('ord', TType.I32, 2)
            oprot.writeI32(self.ord)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReviewStatusRuleFilter(object):
    """
    This struct can be used for filtering review status rules (see
    getReviewStatusRules()).
    Members of this struct are interpreted in "OR" relation with each other.
    Between the elements of the list there is "AND" relation.

    - reportHashes: An optional list of report hashes. The result list contains
        the review status only for these report types. If not given then all
        review status rules return in the current product.
    - reviewStatuses: An optional list of review statuses that filter the result
        set. If not set then all kinds of review status return. If empty list
        then nothing returns.
    - authors: An optional list of review status authors that filter the
        result set. If not set then all kinds of review status return. If empty
        list then nothing returns.
    - noAssociatedReports: If true it will filter review status rules which do
        not have any associated report. If it is not set or false it will not
        filter the results.

    Attributes:
     - reportHashes
     - reviewStatuses
     - authors
     - noAssociatedReports
    """


    def __init__(self, reportHashes=None, reviewStatuses=None, authors=None, noAssociatedReports=None,):
        self.reportHashes = reportHashes
        self.reviewStatuses = reviewStatuses
        self.authors = authors
        self.noAssociatedReports = noAssociatedReports

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.reportHashes = []
                    (_etype79, _size76) = iprot.readListBegin()
                    for _i80 in range(_size76):
                        _elem81 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.reportHashes.append(_elem81)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.reviewStatuses = []
                    (_etype85, _size82) = iprot.readListBegin()
                    for _i86 in range(_size82):
                        _elem87 = iprot.readI32()
                        self.reviewStatuses.append(_elem87)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.authors = []
                    (_etype91, _size88) = iprot.readListBegin()
                    for _i92 in range(_size88):
                        _elem93 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.authors.append(_elem93)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.BOOL:
                    self.noAssociatedReports = iprot.readBool()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReviewStatusRuleFilter')
        if self.reportHashes is not None:
            oprot.writeFieldBegin('reportHashes', TType.LIST, 1)
            oprot.writeListBegin(TType.STRING, len(self.reportHashes))
            for iter94 in self.reportHashes:
                oprot.writeString(iter94.encode('utf-8') if sys.version_info[0] == 2 else iter94)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.reviewStatuses is not None:
            oprot.writeFieldBegin('reviewStatuses', TType.LIST, 2)
            oprot.writeListBegin(TType.I32, len(self.reviewStatuses))
            for iter95 in self.reviewStatuses:
                oprot.writeI32(iter95)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.authors is not None:
            oprot.writeFieldBegin('authors', TType.LIST, 4)
            oprot.writeListBegin(TType.STRING, len(self.authors))
            for iter96 in self.authors:
                oprot.writeString(iter96.encode('utf-8') if sys.version_info[0] == 2 else iter96)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.noAssociatedReports is not None:
            oprot.writeFieldBegin('noAssociatedReports', TType.BOOL, 5)
            oprot.writeBool(self.noAssociatedReports)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReviewStatusRule(object):
    """
    Attributes:
     - reportHash
     - reviewData
     - associatedReportCount
    """


    def __init__(self, reportHash=None, reviewData=None, associatedReportCount=None,):
        self.reportHash = reportHash
        self.reviewData = reviewData
        self.associatedReportCount = associatedReportCount

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.reportHash = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRUCT:
                    self.reviewData = ReviewData()
                    self.reviewData.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.associatedReportCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReviewStatusRule')
        if self.reportHash is not None:
            oprot.writeFieldBegin('reportHash', TType.STRING, 1)
            oprot.writeString(self.reportHash.encode('utf-8') if sys.version_info[0] == 2 else self.reportHash)
            oprot.writeFieldEnd()
        if self.reviewData is not None:
            oprot.writeFieldBegin('reviewData', TType.STRUCT, 2)
            self.reviewData.write(oprot)
            oprot.writeFieldEnd()
        if self.associatedReportCount is not None:
            oprot.writeFieldBegin('associatedReportCount', TType.I64, 3)
            oprot.writeI64(self.associatedReportCount)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportData(object):
    """
    Attributes:
     - runId
     - checkerId
     - bugHash
     - checkedFile
     - checkerMsg
     - reportId
     - fileId
     - line
     - column
     - severity
     - reviewData
     - detectionStatus
     - detectedAt
     - fixedAt
     - bugPathLength
     - details
     - analyzerName
     - annotations
    """


    def __init__(self, runId=None, checkerId=None, bugHash=None, checkedFile=None, checkerMsg=None, reportId=None, fileId=None, line=None, column=None, severity=None, reviewData=None, detectionStatus=None, detectedAt=None, fixedAt=None, bugPathLength=None, details=None, analyzerName=None, annotations=None,):
        self.runId = runId
        self.checkerId = checkerId
        self.bugHash = bugHash
        self.checkedFile = checkedFile
        self.checkerMsg = checkerMsg
        self.reportId = reportId
        self.fileId = fileId
        self.line = line
        self.column = column
        self.severity = severity
        self.reviewData = reviewData
        self.detectionStatus = detectionStatus
        self.detectedAt = detectedAt
        self.fixedAt = fixedAt
        self.bugPathLength = bugPathLength
        self.details = details
        self.analyzerName = analyzerName
        self.annotations = annotations

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.checkerId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.bugHash = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.checkedFile = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.checkerMsg = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.reportId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.I64:
                    self.line = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.column = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.I32:
                    self.severity = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRUCT:
                    self.reviewData = ReviewData()
                    self.reviewData.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.I32:
                    self.detectionStatus = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.STRING:
                    self.detectedAt = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.STRING:
                    self.fixedAt = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.I64:
                    self.bugPathLength = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 16:
                if ftype == TType.STRUCT:
                    self.details = ReportDetails()
                    self.details.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 17:
                if ftype == TType.STRING:
                    self.analyzerName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 18:
                if ftype == TType.MAP:
                    self.annotations = {}
                    (_ktype98, _vtype99, _size97) = iprot.readMapBegin()
                    for _i101 in range(_size97):
                        _key102 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val103 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.annotations[_key102] = _val103
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportData')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.checkerId is not None:
            oprot.writeFieldBegin('checkerId', TType.STRING, 2)
            oprot.writeString(self.checkerId.encode('utf-8') if sys.version_info[0] == 2 else self.checkerId)
            oprot.writeFieldEnd()
        if self.bugHash is not None:
            oprot.writeFieldBegin('bugHash', TType.STRING, 3)
            oprot.writeString(self.bugHash.encode('utf-8') if sys.version_info[0] == 2 else self.bugHash)
            oprot.writeFieldEnd()
        if self.checkedFile is not None:
            oprot.writeFieldBegin('checkedFile', TType.STRING, 4)
            oprot.writeString(self.checkedFile.encode('utf-8') if sys.version_info[0] == 2 else self.checkedFile)
            oprot.writeFieldEnd()
        if self.checkerMsg is not None:
            oprot.writeFieldBegin('checkerMsg', TType.STRING, 5)
            oprot.writeString(self.checkerMsg.encode('utf-8') if sys.version_info[0] == 2 else self.checkerMsg)
            oprot.writeFieldEnd()
        if self.reportId is not None:
            oprot.writeFieldBegin('reportId', TType.I64, 6)
            oprot.writeI64(self.reportId)
            oprot.writeFieldEnd()
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 7)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.line is not None:
            oprot.writeFieldBegin('line', TType.I64, 8)
            oprot.writeI64(self.line)
            oprot.writeFieldEnd()
        if self.column is not None:
            oprot.writeFieldBegin('column', TType.I64, 9)
            oprot.writeI64(self.column)
            oprot.writeFieldEnd()
        if self.severity is not None:
            oprot.writeFieldBegin('severity', TType.I32, 10)
            oprot.writeI32(self.severity)
            oprot.writeFieldEnd()
        if self.reviewData is not None:
            oprot.writeFieldBegin('reviewData', TType.STRUCT, 11)
            self.reviewData.write(oprot)
            oprot.writeFieldEnd()
        if self.detectionStatus is not None:
            oprot.writeFieldBegin('detectionStatus', TType.I32, 12)
            oprot.writeI32(self.detectionStatus)
            oprot.writeFieldEnd()
        if self.detectedAt is not None:
            oprot.writeFieldBegin('detectedAt', TType.STRING, 13)
            oprot.writeString(self.detectedAt.encode('utf-8') if sys.version_info[0] == 2 else self.detectedAt)
            oprot.writeFieldEnd()
        if self.fixedAt is not None:
            oprot.writeFieldBegin('fixedAt', TType.STRING, 14)
            oprot.writeString(self.fixedAt.encode('utf-8') if sys.version_info[0] == 2 else self.fixedAt)
            oprot.writeFieldEnd()
        if self.bugPathLength is not None:
            oprot.writeFieldBegin('bugPathLength', TType.I64, 15)
            oprot.writeI64(self.bugPathLength)
            oprot.writeFieldEnd()
        if self.details is not None:
            oprot.writeFieldBegin('details', TType.STRUCT, 16)
            self.details.write(oprot)
            oprot.writeFieldEnd()
        if self.analyzerName is not None:
            oprot.writeFieldBegin('analyzerName', TType.STRING, 17)
            oprot.writeString(self.analyzerName.encode('utf-8') if sys.version_info[0] == 2 else self.analyzerName)
            oprot.writeFieldEnd()
        if self.annotations is not None:
            oprot.writeFieldBegin('annotations', TType.MAP, 18)
            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.annotations))
            for kiter104, viter105 in self.annotations.items():
                oprot.writeString(kiter104.encode('utf-8') if sys.version_info[0] == 2 else kiter104)
                oprot.writeString(viter105.encode('utf-8') if sys.version_info[0] == 2 else viter105)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BugPathLengthRange(object):
    """
    Attributes:
     - min
     - max
    """


    def __init__(self, min=None, max=None,):
        self.min = min
        self.max = max

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.min = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.max = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BugPathLengthRange')
        if self.min is not None:
            oprot.writeFieldBegin('min', TType.I64, 1)
            oprot.writeI64(self.min)
            oprot.writeFieldEnd()
        if self.max is not None:
            oprot.writeFieldBegin('max', TType.I64, 2)
            oprot.writeI64(self.max)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class DateInterval(object):
    """
    Attributes:
     - before
     - after
    """


    def __init__(self, before=None, after=None,):
        self.before = before
        self.after = after

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.before = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.after = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('DateInterval')
        if self.before is not None:
            oprot.writeFieldBegin('before', TType.I64, 1)
            oprot.writeI64(self.before)
            oprot.writeFieldEnd()
        if self.after is not None:
            oprot.writeFieldBegin('after', TType.I64, 2)
            oprot.writeI64(self.after)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportDate(object):
    """
    Attributes:
     - detected
     - fixed
    """


    def __init__(self, detected=None, fixed=None,):
        self.detected = detected
        self.fixed = fixed

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRUCT:
                    self.detected = DateInterval()
                    self.detected.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRUCT:
                    self.fixed = DateInterval()
                    self.fixed.read(iprot)
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportDate')
        if self.detected is not None:
            oprot.writeFieldBegin('detected', TType.STRUCT, 1)
            self.detected.write(oprot)
            oprot.writeFieldEnd()
        if self.fixed is not None:
            oprot.writeFieldBegin('fixed', TType.STRUCT, 2)
            self.fixed.write(oprot)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ReportFilter(object):
    """
    Members of this struct are interpreted in "OR" relation with each other.
    Between the elements of the list there is "AND" relation.

    Attributes:
     - filepath
     - checkerMsg
     - checkerName
     - reportHash
     - severity
     - reviewStatus
     - detectionStatus
     - runHistoryTag
     - firstDetectionDate
     - fixDate
     - isUnique
     - runName
     - runTag
     - componentNames
     - bugPathLength
     - date
     - analyzerNames
     - openReportsDate
     - cleanupPlanNames
     - fileMatchesAnyPoint
     - componentMatchesAnyPoint
     - annotations
     - reportStatus
    """


    def __init__(self, filepath=None, checkerMsg=None, checkerName=None, reportHash=None, severity=None, reviewStatus=None, detectionStatus=None, runHistoryTag=None, firstDetectionDate=None, fixDate=None, isUnique=None, runName=None, runTag=None, componentNames=None, bugPathLength=None, date=None, analyzerNames=None, openReportsDate=None, cleanupPlanNames=None, fileMatchesAnyPoint=None, componentMatchesAnyPoint=None, annotations=None, reportStatus=None,):
        self.filepath = filepath
        self.checkerMsg = checkerMsg
        self.checkerName = checkerName
        self.reportHash = reportHash
        self.severity = severity
        self.reviewStatus = reviewStatus
        self.detectionStatus = detectionStatus
        self.runHistoryTag = runHistoryTag
        self.firstDetectionDate = firstDetectionDate
        self.fixDate = fixDate
        self.isUnique = isUnique
        self.runName = runName
        self.runTag = runTag
        self.componentNames = componentNames
        self.bugPathLength = bugPathLength
        self.date = date
        self.analyzerNames = analyzerNames
        self.openReportsDate = openReportsDate
        self.cleanupPlanNames = cleanupPlanNames
        self.fileMatchesAnyPoint = fileMatchesAnyPoint
        self.componentMatchesAnyPoint = componentMatchesAnyPoint
        self.annotations = annotations
        self.reportStatus = reportStatus

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.filepath = []
                    (_etype109, _size106) = iprot.readListBegin()
                    for _i110 in range(_size106):
                        _elem111 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.filepath.append(_elem111)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.checkerMsg = []
                    (_etype115, _size112) = iprot.readListBegin()
                    for _i116 in range(_size112):
                        _elem117 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.checkerMsg.append(_elem117)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.checkerName = []
                    (_etype121, _size118) = iprot.readListBegin()
                    for _i122 in range(_size118):
                        _elem123 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.checkerName.append(_elem123)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.reportHash = []
                    (_etype127, _size124) = iprot.readListBegin()
                    for _i128 in range(_size124):
                        _elem129 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.reportHash.append(_elem129)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.severity = []
                    (_etype133, _size130) = iprot.readListBegin()
                    for _i134 in range(_size130):
                        _elem135 = iprot.readI32()
                        self.severity.append(_elem135)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.LIST:
                    self.reviewStatus = []
                    (_etype139, _size136) = iprot.readListBegin()
                    for _i140 in range(_size136):
                        _elem141 = iprot.readI32()
                        self.reviewStatus.append(_elem141)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.LIST:
                    self.detectionStatus = []
                    (_etype145, _size142) = iprot.readListBegin()
                    for _i146 in range(_size142):
                        _elem147 = iprot.readI32()
                        self.detectionStatus.append(_elem147)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.LIST:
                    self.runHistoryTag = []
                    (_etype151, _size148) = iprot.readListBegin()
                    for _i152 in range(_size148):
                        _elem153 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.runHistoryTag.append(_elem153)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.firstDetectionDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.I64:
                    self.fixDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.BOOL:
                    self.isUnique = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.LIST:
                    self.runName = []
                    (_etype157, _size154) = iprot.readListBegin()
                    for _i158 in range(_size154):
                        _elem159 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.runName.append(_elem159)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.LIST:
                    self.runTag = []
                    (_etype163, _size160) = iprot.readListBegin()
                    for _i164 in range(_size160):
                        _elem165 = iprot.readI64()
                        self.runTag.append(_elem165)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.LIST:
                    self.componentNames = []
                    (_etype169, _size166) = iprot.readListBegin()
                    for _i170 in range(_size166):
                        _elem171 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.componentNames.append(_elem171)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.STRUCT:
                    self.bugPathLength = BugPathLengthRange()
                    self.bugPathLength.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 16:
                if ftype == TType.STRUCT:
                    self.date = ReportDate()
                    self.date.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 17:
                if ftype == TType.LIST:
                    self.analyzerNames = []
                    (_etype175, _size172) = iprot.readListBegin()
                    for _i176 in range(_size172):
                        _elem177 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.analyzerNames.append(_elem177)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 18:
                if ftype == TType.I64:
                    self.openReportsDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 19:
                if ftype == TType.LIST:
                    self.cleanupPlanNames = []
                    (_etype181, _size178) = iprot.readListBegin()
                    for _i182 in range(_size178):
                        _elem183 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.cleanupPlanNames.append(_elem183)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 20:
                if ftype == TType.BOOL:
                    self.fileMatchesAnyPoint = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 21:
                if ftype == TType.BOOL:
                    self.componentMatchesAnyPoint = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 22:
                if ftype == TType.LIST:
                    self.annotations = []
                    (_etype187, _size184) = iprot.readListBegin()
                    for _i188 in range(_size184):
                        _elem189 = Pair()
                        _elem189.read(iprot)
                        self.annotations.append(_elem189)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 23:
                if ftype == TType.LIST:
                    self.reportStatus = []
                    (_etype193, _size190) = iprot.readListBegin()
                    for _i194 in range(_size190):
                        _elem195 = iprot.readI32()
                        self.reportStatus.append(_elem195)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ReportFilter')
        if self.filepath is not None:
            oprot.writeFieldBegin('filepath', TType.LIST, 1)
            oprot.writeListBegin(TType.STRING, len(self.filepath))
            for iter196 in self.filepath:
                oprot.writeString(iter196.encode('utf-8') if sys.version_info[0] == 2 else iter196)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.checkerMsg is not None:
            oprot.writeFieldBegin('checkerMsg', TType.LIST, 2)
            oprot.writeListBegin(TType.STRING, len(self.checkerMsg))
            for iter197 in self.checkerMsg:
                oprot.writeString(iter197.encode('utf-8') if sys.version_info[0] == 2 else iter197)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.checkerName is not None:
            oprot.writeFieldBegin('checkerName', TType.LIST, 3)
            oprot.writeListBegin(TType.STRING, len(self.checkerName))
            for iter198 in self.checkerName:
                oprot.writeString(iter198.encode('utf-8') if sys.version_info[0] == 2 else iter198)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.reportHash is not None:
            oprot.writeFieldBegin('reportHash', TType.LIST, 4)
            oprot.writeListBegin(TType.STRING, len(self.reportHash))
            for iter199 in self.reportHash:
                oprot.writeString(iter199.encode('utf-8') if sys.version_info[0] == 2 else iter199)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.severity is not None:
            oprot.writeFieldBegin('severity', TType.LIST, 5)
            oprot.writeListBegin(TType.I32, len(self.severity))
            for iter200 in self.severity:
                oprot.writeI32(iter200)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.reviewStatus is not None:
            oprot.writeFieldBegin('reviewStatus', TType.LIST, 6)
            oprot.writeListBegin(TType.I32, len(self.reviewStatus))
            for iter201 in self.reviewStatus:
                oprot.writeI32(iter201)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.detectionStatus is not None:
            oprot.writeFieldBegin('detectionStatus', TType.LIST, 7)
            oprot.writeListBegin(TType.I32, len(self.detectionStatus))
            for iter202 in self.detectionStatus:
                oprot.writeI32(iter202)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.runHistoryTag is not None:
            oprot.writeFieldBegin('runHistoryTag', TType.LIST, 8)
            oprot.writeListBegin(TType.STRING, len(self.runHistoryTag))
            for iter203 in self.runHistoryTag:
                oprot.writeString(iter203.encode('utf-8') if sys.version_info[0] == 2 else iter203)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.firstDetectionDate is not None:
            oprot.writeFieldBegin('firstDetectionDate', TType.I64, 9)
            oprot.writeI64(self.firstDetectionDate)
            oprot.writeFieldEnd()
        if self.fixDate is not None:
            oprot.writeFieldBegin('fixDate', TType.I64, 10)
            oprot.writeI64(self.fixDate)
            oprot.writeFieldEnd()
        if self.isUnique is not None:
            oprot.writeFieldBegin('isUnique', TType.BOOL, 11)
            oprot.writeBool(self.isUnique)
            oprot.writeFieldEnd()
        if self.runName is not None:
            oprot.writeFieldBegin('runName', TType.LIST, 12)
            oprot.writeListBegin(TType.STRING, len(self.runName))
            for iter204 in self.runName:
                oprot.writeString(iter204.encode('utf-8') if sys.version_info[0] == 2 else iter204)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.runTag is not None:
            oprot.writeFieldBegin('runTag', TType.LIST, 13)
            oprot.writeListBegin(TType.I64, len(self.runTag))
            for iter205 in self.runTag:
                oprot.writeI64(iter205)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.componentNames is not None:
            oprot.writeFieldBegin('componentNames', TType.LIST, 14)
            oprot.writeListBegin(TType.STRING, len(self.componentNames))
            for iter206 in self.componentNames:
                oprot.writeString(iter206.encode('utf-8') if sys.version_info[0] == 2 else iter206)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.bugPathLength is not None:
            oprot.writeFieldBegin('bugPathLength', TType.STRUCT, 15)
            self.bugPathLength.write(oprot)
            oprot.writeFieldEnd()
        if self.date is not None:
            oprot.writeFieldBegin('date', TType.STRUCT, 16)
            self.date.write(oprot)
            oprot.writeFieldEnd()
        if self.analyzerNames is not None:
            oprot.writeFieldBegin('analyzerNames', TType.LIST, 17)
            oprot.writeListBegin(TType.STRING, len(self.analyzerNames))
            for iter207 in self.analyzerNames:
                oprot.writeString(iter207.encode('utf-8') if sys.version_info[0] == 2 else iter207)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.openReportsDate is not None:
            oprot.writeFieldBegin('openReportsDate', TType.I64, 18)
            oprot.writeI64(self.openReportsDate)
            oprot.writeFieldEnd()
        if self.cleanupPlanNames is not None:
            oprot.writeFieldBegin('cleanupPlanNames', TType.LIST, 19)
            oprot.writeListBegin(TType.STRING, len(self.cleanupPlanNames))
            for iter208 in self.cleanupPlanNames:
                oprot.writeString(iter208.encode('utf-8') if sys.version_info[0] == 2 else iter208)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.fileMatchesAnyPoint is not None:
            oprot.writeFieldBegin('fileMatchesAnyPoint', TType.BOOL, 20)
            oprot.writeBool(self.fileMatchesAnyPoint)
            oprot.writeFieldEnd()
        if self.componentMatchesAnyPoint is not None:
            oprot.writeFieldBegin('componentMatchesAnyPoint', TType.BOOL, 21)
            oprot.writeBool(self.componentMatchesAnyPoint)
            oprot.writeFieldEnd()
        if self.annotations is not None:
            oprot.writeFieldBegin('annotations', TType.LIST, 22)
            oprot.writeListBegin(TType.STRUCT, len(self.annotations))
            for iter209 in self.annotations:
                iter209.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.reportStatus is not None:
            oprot.writeFieldBegin('reportStatus', TType.LIST, 23)
            oprot.writeListBegin(TType.I32, len(self.reportStatus))
            for iter210 in self.reportStatus:
                oprot.writeI32(iter210)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunReportCount(object):
    """
    Attributes:
     - runId
     - name
     - reportCount
    """


    def __init__(self, runId=None, name=None, reportCount=None,):
        self.runId = runId
        self.name = name
        self.reportCount = reportCount

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.reportCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunReportCount')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.reportCount is not None:
            oprot.writeFieldBegin('reportCount', TType.I64, 3)
            oprot.writeI64(self.reportCount)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CheckerCount(object):
    """
    Attributes:
     - name
     - severity
     - count
    """


    def __init__(self, name=None, severity=None, count=None,):
        self.name = name
        self.severity = severity
        self.count = count

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.severity = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.count = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CheckerCount')
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 1)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.severity is not None:
            oprot.writeFieldBegin('severity', TType.I32, 2)
            oprot.writeI32(self.severity)
            oprot.writeFieldEnd()
        if self.count is not None:
            oprot.writeFieldBegin('count', TType.I64, 3)
            oprot.writeI64(self.count)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CheckerStatusVerificationDetail(object):
    """
    Attributes:
     - checkerName
     - analyzerName
     - severity
     - enabled
     - disabled
     - closed
     - outstanding
    """


    def __init__(self, checkerName=None, analyzerName=None, severity=None, enabled=None, disabled=None, closed=None, outstanding=None,):
        self.checkerName = checkerName
        self.analyzerName = analyzerName
        self.severity = severity
        self.enabled = enabled
        self.disabled = disabled
        self.closed = closed
        self.outstanding = outstanding

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.checkerName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.analyzerName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I32:
                    self.severity = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.enabled = []
                    (_etype214, _size211) = iprot.readListBegin()
                    for _i215 in range(_size211):
                        _elem216 = iprot.readI64()
                        self.enabled.append(_elem216)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.disabled = []
                    (_etype220, _size217) = iprot.readListBegin()
                    for _i221 in range(_size217):
                        _elem222 = iprot.readI64()
                        self.disabled.append(_elem222)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.closed = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.outstanding = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CheckerStatusVerificationDetail')
        if self.checkerName is not None:
            oprot.writeFieldBegin('checkerName', TType.STRING, 1)
            oprot.writeString(self.checkerName.encode('utf-8') if sys.version_info[0] == 2 else self.checkerName)
            oprot.writeFieldEnd()
        if self.analyzerName is not None:
            oprot.writeFieldBegin('analyzerName', TType.STRING, 2)
            oprot.writeString(self.analyzerName.encode('utf-8') if sys.version_info[0] == 2 else self.analyzerName)
            oprot.writeFieldEnd()
        if self.severity is not None:
            oprot.writeFieldBegin('severity', TType.I32, 3)
            oprot.writeI32(self.severity)
            oprot.writeFieldEnd()
        if self.enabled is not None:
            oprot.writeFieldBegin('enabled', TType.LIST, 4)
            oprot.writeListBegin(TType.I64, len(self.enabled))
            for iter223 in self.enabled:
                oprot.writeI64(iter223)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.LIST, 5)
            oprot.writeListBegin(TType.I64, len(self.disabled))
            for iter224 in self.disabled:
                oprot.writeI64(iter224)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.closed is not None:
            oprot.writeFieldBegin('closed', TType.I64, 6)
            oprot.writeI64(self.closed)
            oprot.writeFieldEnd()
        if self.outstanding is not None:
            oprot.writeFieldBegin('outstanding', TType.I64, 7)
            oprot.writeI64(self.outstanding)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CommentData(object):
    """
    Attributes:
     - id
     - author
     - message
     - createdAt
     - kind
    """


    def __init__(self, id=None, author=None, message=None, createdAt=None, kind=None,):
        self.id = id
        self.author = author
        self.message = message
        self.createdAt = createdAt
        self.kind = kind

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.author = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.message = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.createdAt = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I32:
                    self.kind = iprot.readI32()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CommentData')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.author is not None:
            oprot.writeFieldBegin('author', TType.STRING, 2)
            oprot.writeString(self.author.encode('utf-8') if sys.version_info[0] == 2 else self.author)
            oprot.writeFieldEnd()
        if self.message is not None:
            oprot.writeFieldBegin('message', TType.STRING, 3)
            oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message)
            oprot.writeFieldEnd()
        if self.createdAt is not None:
            oprot.writeFieldBegin('createdAt', TType.STRING, 4)
            oprot.writeString(self.createdAt.encode('utf-8') if sys.version_info[0] == 2 else self.createdAt)
            oprot.writeFieldEnd()
        if self.kind is not None:
            oprot.writeFieldBegin('kind', TType.I32, 5)
            oprot.writeI32(self.kind)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class RunFilter(object):
    """
    Members of this struct are interpreted in "AND" relation with each other.
    Between the list elements there is "OR" relation.
    If exactMatch field is True it will use exact match for run names.

    Attributes:
     - ids
     - names
     - exactMatch
     - beforeTime
     - afterTime
     - beforeRun
     - afterRun
    """


    def __init__(self, ids=None, names=None, exactMatch=None, beforeTime=None, afterTime=None, beforeRun=None, afterRun=None,):
        self.ids = ids
        self.names = names
        self.exactMatch = exactMatch
        self.beforeTime = beforeTime
        self.afterTime = afterTime
        self.beforeRun = beforeRun
        self.afterRun = afterRun

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.ids = []
                    (_etype228, _size225) = iprot.readListBegin()
                    for _i229 in range(_size225):
                        _elem230 = iprot.readI64()
                        self.ids.append(_elem230)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.names = []
                    (_etype234, _size231) = iprot.readListBegin()
                    for _i235 in range(_size231):
                        _elem236 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.names.append(_elem236)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.BOOL:
                    self.exactMatch = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.beforeTime = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.afterTime = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.beforeRun = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.afterRun = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('RunFilter')
        if self.ids is not None:
            oprot.writeFieldBegin('ids', TType.LIST, 1)
            oprot.writeListBegin(TType.I64, len(self.ids))
            for iter237 in self.ids:
                oprot.writeI64(iter237)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.names is not None:
            oprot.writeFieldBegin('names', TType.LIST, 2)
            oprot.writeListBegin(TType.STRING, len(self.names))
            for iter238 in self.names:
                oprot.writeString(iter238.encode('utf-8') if sys.version_info[0] == 2 else iter238)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.exactMatch is not None:
            oprot.writeFieldBegin('exactMatch', TType.BOOL, 3)
            oprot.writeBool(self.exactMatch)
            oprot.writeFieldEnd()
        if self.beforeTime is not None:
            oprot.writeFieldBegin('beforeTime', TType.I64, 4)
            oprot.writeI64(self.beforeTime)
            oprot.writeFieldEnd()
        if self.afterTime is not None:
            oprot.writeFieldBegin('afterTime', TType.I64, 5)
            oprot.writeI64(self.afterTime)
            oprot.writeFieldEnd()
        if self.beforeRun is not None:
            oprot.writeFieldBegin('beforeRun', TType.STRING, 6)
            oprot.writeString(self.beforeRun.encode('utf-8') if sys.version_info[0] == 2 else self.beforeRun)
            oprot.writeFieldEnd()
        if self.afterRun is not None:
            oprot.writeFieldBegin('afterRun', TType.STRING, 7)
            oprot.writeString(self.afterRun.encode('utf-8') if sys.version_info[0] == 2 else self.afterRun)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CompareData(object):
    """
    Attributes:
     - runIds
     - diffType
     - runTag
     - openReportsDate
    """


    def __init__(self, runIds=None, diffType=None, runTag=None, openReportsDate=None,):
        self.runIds = runIds
        self.diffType = diffType
        self.runTag = runTag
        self.openReportsDate = openReportsDate

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.runIds = []
                    (_etype242, _size239) = iprot.readListBegin()
                    for _i243 in range(_size239):
                        _elem244 = iprot.readI64()
                        self.runIds.append(_elem244)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I32:
                    self.diffType = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.runTag = []
                    (_etype248, _size245) = iprot.readListBegin()
                    for _i249 in range(_size245):
                        _elem250 = iprot.readI64()
                        self.runTag.append(_elem250)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.openReportsDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CompareData')
        if self.runIds is not None:
            oprot.writeFieldBegin('runIds', TType.LIST, 1)
            oprot.writeListBegin(TType.I64, len(self.runIds))
            for iter251 in self.runIds:
                oprot.writeI64(iter251)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.diffType is not None:
            oprot.writeFieldBegin('diffType', TType.I32, 2)
            oprot.writeI32(self.diffType)
            oprot.writeFieldEnd()
        if self.runTag is not None:
            oprot.writeFieldBegin('runTag', TType.LIST, 3)
            oprot.writeListBegin(TType.I64, len(self.runTag))
            for iter252 in self.runTag:
                oprot.writeI64(iter252)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.openReportsDate is not None:
            oprot.writeFieldBegin('openReportsDate', TType.I64, 4)
            oprot.writeI64(self.openReportsDate)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class LinesInFilesRequested(object):
    """
    Attributes:
     - fileId
     - lines
    """


    def __init__(self, fileId=None, lines=None,):
        self.fileId = fileId
        self.lines = lines

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.fileId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.SET:
                    self.lines = set()
                    (_etype256, _size253) = iprot.readSetBegin()
                    for _i257 in range(_size253):
                        _elem258 = iprot.readI64()
                        self.lines.add(_elem258)
                    iprot.readSetEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('LinesInFilesRequested')
        if self.fileId is not None:
            oprot.writeFieldBegin('fileId', TType.I64, 1)
            oprot.writeI64(self.fileId)
            oprot.writeFieldEnd()
        if self.lines is not None:
            oprot.writeFieldBegin('lines', TType.SET, 2)
            oprot.writeSetBegin(TType.I64, len(self.lines))
            for iter259 in self.lines:
                oprot.writeI64(iter259)
            oprot.writeSetEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class SourceComponentData(object):
    """
    Attributes:
     - name
     - value
     - description
    """


    def __init__(self, name=None, value=None, description=None,):
        self.name = name
        self.value = value
        self.description = description

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.value = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('SourceComponentData')
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 1)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.value is not None:
            oprot.writeFieldBegin('value', TType.STRING, 2)
            oprot.writeString(self.value.encode('utf-8') if sys.version_info[0] == 2 else self.value)
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 3)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class AnalysisFailureInfo(object):
    """
    Attributes:
     - runName
    """


    def __init__(self, runName=None,):
        self.runName = runName

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.runName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('AnalysisFailureInfo')
        if self.runName is not None:
            oprot.writeFieldBegin('runName', TType.STRING, 1)
            oprot.writeString(self.runName.encode('utf-8') if sys.version_info[0] == 2 else self.runName)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class ExportData(object):
    """
    Attributes:
     - comments
     - reviewData
    """


    def __init__(self, comments=None, reviewData=None,):
        self.comments = comments
        self.reviewData = reviewData

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.MAP:
                    self.comments = {}
                    (_ktype261, _vtype262, _size260) = iprot.readMapBegin()
                    for _i264 in range(_size260):
                        _key265 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val266 = []
                        (_etype270, _size267) = iprot.readListBegin()
                        for _i271 in range(_size267):
                            _elem272 = CommentData()
                            _elem272.read(iprot)
                            _val266.append(_elem272)
                        iprot.readListEnd()
                        self.comments[_key265] = _val266
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.MAP:
                    self.reviewData = {}
                    (_ktype274, _vtype275, _size273) = iprot.readMapBegin()
                    for _i277 in range(_size273):
                        _key278 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val279 = ReviewData()
                        _val279.read(iprot)
                        self.reviewData[_key278] = _val279
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('ExportData')
        if self.comments is not None:
            oprot.writeFieldBegin('comments', TType.MAP, 1)
            oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.comments))
            for kiter280, viter281 in self.comments.items():
                oprot.writeString(kiter280.encode('utf-8') if sys.version_info[0] == 2 else kiter280)
                oprot.writeListBegin(TType.STRUCT, len(viter281))
                for iter282 in viter281:
                    iter282.write(oprot)
                oprot.writeListEnd()
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.reviewData is not None:
            oprot.writeFieldBegin('reviewData', TType.MAP, 2)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.reviewData))
            for kiter283, viter284 in self.reviewData.items():
                oprot.writeString(kiter283.encode('utf-8') if sys.version_info[0] == 2 else kiter283)
                viter284.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class AnalysisInfoFilter(object):
    """
    Attributes:
     - runId
     - runHistoryId
     - reportId
    """


    def __init__(self, runId=None, runHistoryId=None, reportId=None,):
        self.runId = runId
        self.runHistoryId = runHistoryId
        self.reportId = reportId

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.runId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.runHistoryId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.reportId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('AnalysisInfoFilter')
        if self.runId is not None:
            oprot.writeFieldBegin('runId', TType.I64, 1)
            oprot.writeI64(self.runId)
            oprot.writeFieldEnd()
        if self.runHistoryId is not None:
            oprot.writeFieldBegin('runHistoryId', TType.I64, 2)
            oprot.writeI64(self.runHistoryId)
            oprot.writeFieldEnd()
        if self.reportId is not None:
            oprot.writeFieldBegin('reportId', TType.I64, 3)
            oprot.writeI64(self.reportId)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class AnalysisInfoChecker(object):
    """
    Attributes:
     - enabled
    """


    def __init__(self, enabled=None,):
        self.enabled = enabled

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.BOOL:
                    self.enabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('AnalysisInfoChecker')
        if self.enabled is not None:
            oprot.writeFieldBegin('enabled', TType.BOOL, 1)
            oprot.writeBool(self.enabled)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class AnalysisInfo(object):
    """
    Attributes:
     - analyzerCommand
     - checkers
    """


    def __init__(self, analyzerCommand=None, checkers=None,):
        self.analyzerCommand = analyzerCommand
        self.checkers = checkers

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.analyzerCommand = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.MAP:
                    self.checkers = {}
                    (_ktype286, _vtype287, _size285) = iprot.readMapBegin()
                    for _i289 in range(_size285):
                        _key290 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val291 = {}
                        (_ktype293, _vtype294, _size292) = iprot.readMapBegin()
                        for _i296 in range(_size292):
                            _key297 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                            _val298 = AnalysisInfoChecker()
                            _val298.read(iprot)
                            _val291[_key297] = _val298
                        iprot.readMapEnd()
                        self.checkers[_key290] = _val291
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('AnalysisInfo')
        if self.analyzerCommand is not None:
            oprot.writeFieldBegin('analyzerCommand', TType.STRING, 1)
            oprot.writeString(self.analyzerCommand.encode('utf-8') if sys.version_info[0] == 2 else self.analyzerCommand)
            oprot.writeFieldEnd()
        if self.checkers is not None:
            oprot.writeFieldBegin('checkers', TType.MAP, 2)
            oprot.writeMapBegin(TType.STRING, TType.MAP, len(self.checkers))
            for kiter299, viter300 in self.checkers.items():
                oprot.writeString(kiter299.encode('utf-8') if sys.version_info[0] == 2 else kiter299)
                oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(viter300))
                for kiter301, viter302 in viter300.items():
                    oprot.writeString(kiter301.encode('utf-8') if sys.version_info[0] == 2 else kiter301)
                    viter302.write(oprot)
                oprot.writeMapEnd()
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BlameData(object):
    """
    Attributes:
     - startLine
     - endLine
     - commitHash
    """


    def __init__(self, startLine=None, endLine=None, commitHash=None,):
        self.startLine = startLine
        self.endLine = endLine
        self.commitHash = commitHash

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.startLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.endLine = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.commitHash = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BlameData')
        if self.startLine is not None:
            oprot.writeFieldBegin('startLine', TType.I64, 1)
            oprot.writeI64(self.startLine)
            oprot.writeFieldEnd()
        if self.endLine is not None:
            oprot.writeFieldBegin('endLine', TType.I64, 2)
            oprot.writeI64(self.endLine)
            oprot.writeFieldEnd()
        if self.commitHash is not None:
            oprot.writeFieldBegin('commitHash', TType.STRING, 3)
            oprot.writeString(self.commitHash.encode('utf-8') if sys.version_info[0] == 2 else self.commitHash)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CommitAuthor(object):
    """
    Attributes:
     - name
     - email
    """


    def __init__(self, name=None, email=None,):
        self.name = name
        self.email = email

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.email = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CommitAuthor')
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 1)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.email is not None:
            oprot.writeFieldBegin('email', TType.STRING, 2)
            oprot.writeString(self.email.encode('utf-8') if sys.version_info[0] == 2 else self.email)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class Commit(object):
    """
    Attributes:
     - author
     - summary
     - message
     - committedDateTime
    """


    def __init__(self, author=None, summary=None, message=None, committedDateTime=None,):
        self.author = author
        self.summary = summary
        self.message = message
        self.committedDateTime = committedDateTime

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRUCT:
                    self.author = CommitAuthor()
                    self.author.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.summary = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRING:
                    self.message = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.committedDateTime = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('Commit')
        if self.author is not None:
            oprot.writeFieldBegin('author', TType.STRUCT, 1)
            self.author.write(oprot)
            oprot.writeFieldEnd()
        if self.summary is not None:
            oprot.writeFieldBegin('summary', TType.STRING, 2)
            oprot.writeString(self.summary.encode('utf-8') if sys.version_info[0] == 2 else self.summary)
            oprot.writeFieldEnd()
        if self.message is not None:
            oprot.writeFieldBegin('message', TType.STRING, 3)
            oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message)
            oprot.writeFieldEnd()
        if self.committedDateTime is not None:
            oprot.writeFieldBegin('committedDateTime', TType.STRING, 4)
            oprot.writeString(self.committedDateTime.encode('utf-8') if sys.version_info[0] == 2 else self.committedDateTime)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class BlameInfo(object):
    """
    Attributes:
     - commits
     - blame
    """


    def __init__(self, commits=None, blame=None,):
        self.commits = commits
        self.blame = blame

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.MAP:
                    self.commits = {}
                    (_ktype304, _vtype305, _size303) = iprot.readMapBegin()
                    for _i307 in range(_size303):
                        _key308 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val309 = Commit()
                        _val309.read(iprot)
                        self.commits[_key308] = _val309
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.blame = []
                    (_etype313, _size310) = iprot.readListBegin()
                    for _i314 in range(_size310):
                        _elem315 = BlameData()
                        _elem315.read(iprot)
                        self.blame.append(_elem315)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('BlameInfo')
        if self.commits is not None:
            oprot.writeFieldBegin('commits', TType.MAP, 1)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.commits))
            for kiter316, viter317 in self.commits.items():
                oprot.writeString(kiter316.encode('utf-8') if sys.version_info[0] == 2 else kiter316)
                viter317.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.blame is not None:
            oprot.writeFieldBegin('blame', TType.LIST, 2)
            oprot.writeListBegin(TType.STRUCT, len(self.blame))
            for iter318 in self.blame:
                iter318.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CleanupPlan(object):
    """
    Attributes:
     - id
     - name
     - dueDate
     - description
     - closedAt
     - reportHashes
    """


    def __init__(self, id=None, name=None, dueDate=None, description=None, closedAt=None, reportHashes=None,):
        self.id = id
        self.name = name
        self.dueDate = dueDate
        self.description = description
        self.closedAt = closedAt
        self.reportHashes = reportHashes

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.dueDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.description = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.closedAt = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.LIST:
                    self.reportHashes = []
                    (_etype322, _size319) = iprot.readListBegin()
                    for _i323 in range(_size319):
                        _elem324 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.reportHashes.append(_elem324)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CleanupPlan')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.dueDate is not None:
            oprot.writeFieldBegin('dueDate', TType.I64, 3)
            oprot.writeI64(self.dueDate)
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 4)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        if self.closedAt is not None:
            oprot.writeFieldBegin('closedAt', TType.I64, 5)
            oprot.writeI64(self.closedAt)
            oprot.writeFieldEnd()
        if self.reportHashes is not None:
            oprot.writeFieldBegin('reportHashes', TType.LIST, 6)
            oprot.writeListBegin(TType.STRING, len(self.reportHashes))
            for iter325 in self.reportHashes:
                oprot.writeString(iter325.encode('utf-8') if sys.version_info[0] == 2 else iter325)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class CleanupPlanFilter(object):
    """
    Attributes:
     - ids
     - names
     - isOpen
    """


    def __init__(self, ids=None, names=None, isOpen=None,):
        self.ids = ids
        self.names = names
        self.isOpen = isOpen

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.LIST:
                    self.ids = []
                    (_etype329, _size326) = iprot.readListBegin()
                    for _i330 in range(_size326):
                        _elem331 = iprot.readI64()
                        self.ids.append(_elem331)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.names = []
                    (_etype335, _size332) = iprot.readListBegin()
                    for _i336 in range(_size332):
                        _elem337 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.names.append(_elem337)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.BOOL:
                    self.isOpen = iprot.readBool()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('CleanupPlanFilter')
        if self.ids is not None:
            oprot.writeFieldBegin('ids', TType.LIST, 1)
            oprot.writeListBegin(TType.I64, len(self.ids))
            for iter338 in self.ids:
                oprot.writeI64(iter338)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.names is not None:
            oprot.writeFieldBegin('names', TType.LIST, 2)
            oprot.writeListBegin(TType.STRING, len(self.names))
            for iter339 in self.names:
                oprot.writeString(iter339.encode('utf-8') if sys.version_info[0] == 2 else iter339)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.isOpen is not None:
            oprot.writeFieldBegin('isOpen', TType.BOOL, 3)
            oprot.writeBool(self.isOpen)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)


class Checker(object):
    """
    Attributes:
     - analyzerName
     - checkerId
    """


    def __init__(self, analyzerName=None, checkerId=None,):
        self.analyzerName = analyzerName
        self.checkerId = checkerId

    def read(self, iprot):
        if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None:
            iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec])
            return
        iprot.readStructBegin()
        while True:
            (fname, ftype, fid) = iprot.readFieldBegin()
            if ftype == TType.STOP:
                break
            if fid == 1:
                if ftype == TType.STRING:
                    self.analyzerName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.checkerId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            else:
                iprot.skip(ftype)
            iprot.readFieldEnd()
        iprot.readStructEnd()

    def write(self, oprot):
        if oprot._fast_encode is not None and self.thrift_spec is not None:
            oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec]))
            return
        oprot.writeStructBegin('Checker')
        if self.analyzerName is not None:
            oprot.writeFieldBegin('analyzerName', TType.STRING, 1)
            oprot.writeString(self.analyzerName.encode('utf-8') if sys.version_info[0] == 2 else self.analyzerName)
            oprot.writeFieldEnd()
        if self.checkerId is not None:
            oprot.writeFieldBegin('checkerId', TType.STRING, 2)
            oprot.writeString(self.checkerId.encode('utf-8') if sys.version_info[0] == 2 else self.checkerId)
            oprot.writeFieldEnd()
        oprot.writeFieldStop()
        oprot.writeStructEnd()

    def validate(self):
        return

    def __repr__(self):
        L = ['%s=%r' % (key, value)
             for key, value in self.__dict__.items()]
        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))

    def __eq__(self, other):
        return isinstance(other, self.__class__) and self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not (self == other)
all_structs.append(Pair)
Pair.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'first', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'second', 'UTF8', None, ),  # 2
)
all_structs.append(SourceFileData)
SourceFileData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'fileId', None, None, ),  # 1
    (2, TType.STRING, 'filePath', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'fileContent', 'UTF8', None, ),  # 3
    (4, TType.BOOL, 'hasBlameInfo', None, None, ),  # 4
    (5, TType.STRING, 'remoteUrl', 'UTF8', None, ),  # 5
    (6, TType.STRING, 'trackingBranch', 'UTF8', None, ),  # 6
)
all_structs.append(SortMode)
SortMode.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'type', None, None, ),  # 1
    (2, TType.I32, 'ord', None, None, ),  # 2
)
all_structs.append(RunSortMode)
RunSortMode.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'type', None, None, ),  # 1
    (2, TType.I32, 'ord', None, None, ),  # 2
)
all_structs.append(BugPathEvent)
BugPathEvent.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'startLine', None, None, ),  # 1
    (2, TType.I64, 'startCol', None, None, ),  # 2
    (3, TType.I64, 'endLine', None, None, ),  # 3
    (4, TType.I64, 'endCol', None, None, ),  # 4
    (5, TType.STRING, 'msg', 'UTF8', None, ),  # 5
    (6, TType.I64, 'fileId', None, None, ),  # 6
    (7, TType.STRING, 'filePath', 'UTF8', None, ),  # 7
)
all_structs.append(BugPathPos)
BugPathPos.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'startLine', None, None, ),  # 1
    (2, TType.I64, 'startCol', None, None, ),  # 2
    (3, TType.I64, 'endLine', None, None, ),  # 3
    (4, TType.I64, 'endCol', None, None, ),  # 4
    (5, TType.I64, 'fileId', None, None, ),  # 5
    (6, TType.STRING, 'filePath', 'UTF8', None, ),  # 6
)
all_structs.append(ExtendedReportData)
ExtendedReportData.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'type', None, None, ),  # 1
    (2, TType.I64, 'startLine', None, None, ),  # 2
    (3, TType.I64, 'startCol', None, None, ),  # 3
    (4, TType.I64, 'endLine', None, None, ),  # 4
    (5, TType.I64, 'endCol', None, None, ),  # 5
    (6, TType.STRING, 'message', 'UTF8', None, ),  # 6
    (7, TType.I64, 'fileId', None, None, ),  # 7
    (8, TType.STRING, 'filePath', 'UTF8', None, ),  # 8
)
all_structs.append(ReportDetails)
ReportDetails.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'pathEvents', (TType.STRUCT, [BugPathEvent, None], False), None, ),  # 1
    (2, TType.LIST, 'executionPath', (TType.STRUCT, [BugPathPos, None], False), None, ),  # 2
    (3, TType.LIST, 'extendedData', (TType.STRUCT, [ExtendedReportData, None], False), None, ),  # 3
    (4, TType.LIST, 'comments', (TType.STRUCT, [CommentData, None], False), None, ),  # 4
)
all_structs.append(AnalyzerStatistics)
AnalyzerStatistics.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'version', 'UTF8', None, ),  # 1
    (2, TType.I64, 'failed', None, None, ),  # 2
    (3, TType.I64, 'successful', None, None, ),  # 3
    (4, TType.LIST, 'failedFilePaths', (TType.STRING, 'UTF8', False), None, ),  # 4
)
all_structs.append(RunData)
RunData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'runDate', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'name', 'UTF8', None, ),  # 3
    (4, TType.I64, 'duration', None, None, ),  # 4
    (5, TType.I64, 'resultCount', None, None, ),  # 5
    (6, TType.STRING, 'runCmd', 'UTF8', None, ),  # 6
    (7, TType.MAP, 'detectionStatusCount', (TType.I32, None, TType.I32, None, False), None, ),  # 7
    (8, TType.STRING, 'versionTag', 'UTF8', None, ),  # 8
    (9, TType.STRING, 'codeCheckerVersion', 'UTF8', None, ),  # 9
    (10, TType.MAP, 'analyzerStatistics', (TType.STRING, 'UTF8', TType.STRUCT, [AnalyzerStatistics, None], False), None, ),  # 10
    (11, TType.STRING, 'description', 'UTF8', None, ),  # 11
)
all_structs.append(RunHistoryData)
RunHistoryData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'runName', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'versionTag', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'user', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'time', 'UTF8', None, ),  # 5
    (6, TType.I64, 'id', None, None, ),  # 6
    (7, TType.STRING, 'checkCommand', 'UTF8', None, ),  # 7
    (8, TType.STRING, 'codeCheckerVersion', 'UTF8', None, ),  # 8
    (9, TType.MAP, 'analyzerStatistics', (TType.STRING, 'UTF8', TType.STRUCT, [AnalyzerStatistics, None], False), None, ),  # 9
    None,  # 10
    (11, TType.STRING, 'description', 'UTF8', None, ),  # 11
)
all_structs.append(RunHistoryFilter)
RunHistoryFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'tagNames', (TType.STRING, 'UTF8', False), None, ),  # 1
    (2, TType.LIST, 'tagIds', (TType.I64, None, False), None, ),  # 2
    (3, TType.STRUCT, 'stored', [DateInterval, None], None, ),  # 3
)
all_structs.append(RunTagCount)
RunTagCount.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'time', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.I64, 'count', None, None, ),  # 3
    (4, TType.I64, 'id', None, None, ),  # 4
    (5, TType.STRING, 'runName', 'UTF8', None, ),  # 5
    (6, TType.I64, 'runId', None, None, ),  # 6
)
all_structs.append(ReviewData)
ReviewData.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'status', None, None, ),  # 1
    (2, TType.STRING, 'comment', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'author', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'date', 'UTF8', None, ),  # 4
    (5, TType.BOOL, 'isInSource', None, None, ),  # 5
)
all_structs.append(ReviewStatusRuleSortMode)
ReviewStatusRuleSortMode.thrift_spec = (
    None,  # 0
    (1, TType.I32, 'type', None, None, ),  # 1
    (2, TType.I32, 'ord', None, None, ),  # 2
)
all_structs.append(ReviewStatusRuleFilter)
ReviewStatusRuleFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'reportHashes', (TType.STRING, 'UTF8', False), None, ),  # 1
    (2, TType.LIST, 'reviewStatuses', (TType.I32, None, False), None, ),  # 2
    None,  # 3
    (4, TType.LIST, 'authors', (TType.STRING, 'UTF8', False), None, ),  # 4
    (5, TType.BOOL, 'noAssociatedReports', None, None, ),  # 5
)
all_structs.append(ReviewStatusRule)
ReviewStatusRule.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'reportHash', 'UTF8', None, ),  # 1
    (2, TType.STRUCT, 'reviewData', [ReviewData, None], None, ),  # 2
    (3, TType.I64, 'associatedReportCount', None, None, ),  # 3
)
all_structs.append(ReportData)
ReportData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'checkerId', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'bugHash', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'checkedFile', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'checkerMsg', 'UTF8', None, ),  # 5
    (6, TType.I64, 'reportId', None, None, ),  # 6
    (7, TType.I64, 'fileId', None, None, ),  # 7
    (8, TType.I64, 'line', None, None, ),  # 8
    (9, TType.I64, 'column', None, None, ),  # 9
    (10, TType.I32, 'severity', None, None, ),  # 10
    (11, TType.STRUCT, 'reviewData', [ReviewData, None], None, ),  # 11
    (12, TType.I32, 'detectionStatus', None, None, ),  # 12
    (13, TType.STRING, 'detectedAt', 'UTF8', None, ),  # 13
    (14, TType.STRING, 'fixedAt', 'UTF8', None, ),  # 14
    (15, TType.I64, 'bugPathLength', None, None, ),  # 15
    (16, TType.STRUCT, 'details', [ReportDetails, None], None, ),  # 16
    (17, TType.STRING, 'analyzerName', 'UTF8', None, ),  # 17
    (18, TType.MAP, 'annotations', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 18
)
all_structs.append(BugPathLengthRange)
BugPathLengthRange.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'min', None, None, ),  # 1
    (2, TType.I64, 'max', None, None, ),  # 2
)
all_structs.append(DateInterval)
DateInterval.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'before', None, None, ),  # 1
    (2, TType.I64, 'after', None, None, ),  # 2
)
all_structs.append(ReportDate)
ReportDate.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'detected', [DateInterval, None], None, ),  # 1
    (2, TType.STRUCT, 'fixed', [DateInterval, None], None, ),  # 2
)
all_structs.append(ReportFilter)
ReportFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'filepath', (TType.STRING, 'UTF8', False), None, ),  # 1
    (2, TType.LIST, 'checkerMsg', (TType.STRING, 'UTF8', False), None, ),  # 2
    (3, TType.LIST, 'checkerName', (TType.STRING, 'UTF8', False), None, ),  # 3
    (4, TType.LIST, 'reportHash', (TType.STRING, 'UTF8', False), None, ),  # 4
    (5, TType.LIST, 'severity', (TType.I32, None, False), None, ),  # 5
    (6, TType.LIST, 'reviewStatus', (TType.I32, None, False), None, ),  # 6
    (7, TType.LIST, 'detectionStatus', (TType.I32, None, False), None, ),  # 7
    (8, TType.LIST, 'runHistoryTag', (TType.STRING, 'UTF8', False), None, ),  # 8
    (9, TType.I64, 'firstDetectionDate', None, None, ),  # 9
    (10, TType.I64, 'fixDate', None, None, ),  # 10
    (11, TType.BOOL, 'isUnique', None, None, ),  # 11
    (12, TType.LIST, 'runName', (TType.STRING, 'UTF8', False), None, ),  # 12
    (13, TType.LIST, 'runTag', (TType.I64, None, False), None, ),  # 13
    (14, TType.LIST, 'componentNames', (TType.STRING, 'UTF8', False), None, ),  # 14
    (15, TType.STRUCT, 'bugPathLength', [BugPathLengthRange, None], None, ),  # 15
    (16, TType.STRUCT, 'date', [ReportDate, None], None, ),  # 16
    (17, TType.LIST, 'analyzerNames', (TType.STRING, 'UTF8', False), None, ),  # 17
    (18, TType.I64, 'openReportsDate', None, None, ),  # 18
    (19, TType.LIST, 'cleanupPlanNames', (TType.STRING, 'UTF8', False), None, ),  # 19
    (20, TType.BOOL, 'fileMatchesAnyPoint', None, None, ),  # 20
    (21, TType.BOOL, 'componentMatchesAnyPoint', None, None, ),  # 21
    (22, TType.LIST, 'annotations', (TType.STRUCT, [Pair, None], False), None, ),  # 22
    (23, TType.LIST, 'reportStatus', (TType.I32, None, False), None, ),  # 23
)
all_structs.append(RunReportCount)
RunReportCount.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.I64, 'reportCount', None, None, ),  # 3
)
all_structs.append(CheckerCount)
CheckerCount.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'name', 'UTF8', None, ),  # 1
    (2, TType.I32, 'severity', None, None, ),  # 2
    (3, TType.I64, 'count', None, None, ),  # 3
)
all_structs.append(CheckerStatusVerificationDetail)
CheckerStatusVerificationDetail.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'checkerName', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'analyzerName', 'UTF8', None, ),  # 2
    (3, TType.I32, 'severity', None, None, ),  # 3
    (4, TType.LIST, 'enabled', (TType.I64, None, False), None, ),  # 4
    (5, TType.LIST, 'disabled', (TType.I64, None, False), None, ),  # 5
    (6, TType.I64, 'closed', None, None, ),  # 6
    (7, TType.I64, 'outstanding', None, None, ),  # 7
)
all_structs.append(CommentData)
CommentData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'author', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'message', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'createdAt', 'UTF8', None, ),  # 4
    (5, TType.I32, 'kind', None, None, ),  # 5
)
all_structs.append(RunFilter)
RunFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'ids', (TType.I64, None, False), None, ),  # 1
    (2, TType.LIST, 'names', (TType.STRING, 'UTF8', False), None, ),  # 2
    (3, TType.BOOL, 'exactMatch', None, None, ),  # 3
    (4, TType.I64, 'beforeTime', None, None, ),  # 4
    (5, TType.I64, 'afterTime', None, None, ),  # 5
    (6, TType.STRING, 'beforeRun', 'UTF8', None, ),  # 6
    (7, TType.STRING, 'afterRun', 'UTF8', None, ),  # 7
)
all_structs.append(CompareData)
CompareData.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'runIds', (TType.I64, None, False), None, ),  # 1
    (2, TType.I32, 'diffType', None, None, ),  # 2
    (3, TType.LIST, 'runTag', (TType.I64, None, False), None, ),  # 3
    (4, TType.I64, 'openReportsDate', None, None, ),  # 4
)
all_structs.append(LinesInFilesRequested)
LinesInFilesRequested.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'fileId', None, None, ),  # 1
    (2, TType.SET, 'lines', (TType.I64, None, False), None, ),  # 2
)
all_structs.append(SourceComponentData)
SourceComponentData.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'name', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'value', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'description', 'UTF8', None, ),  # 3
)
all_structs.append(AnalysisFailureInfo)
AnalysisFailureInfo.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'runName', 'UTF8', None, ),  # 1
)
all_structs.append(ExportData)
ExportData.thrift_spec = (
    None,  # 0
    (1, TType.MAP, 'comments', (TType.STRING, 'UTF8', TType.LIST, (TType.STRUCT, [CommentData, None], False), False), None, ),  # 1
    (2, TType.MAP, 'reviewData', (TType.STRING, 'UTF8', TType.STRUCT, [ReviewData, None], False), None, ),  # 2
)
all_structs.append(AnalysisInfoFilter)
AnalysisInfoFilter.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'runId', None, None, ),  # 1
    (2, TType.I64, 'runHistoryId', None, None, ),  # 2
    (3, TType.I64, 'reportId', None, None, ),  # 3
)
all_structs.append(AnalysisInfoChecker)
AnalysisInfoChecker.thrift_spec = (
    None,  # 0
    (1, TType.BOOL, 'enabled', None, None, ),  # 1
)
all_structs.append(AnalysisInfo)
AnalysisInfo.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'analyzerCommand', 'UTF8', None, ),  # 1
    (2, TType.MAP, 'checkers', (TType.STRING, 'UTF8', TType.MAP, (TType.STRING, 'UTF8', TType.STRUCT, [AnalysisInfoChecker, None], False), False), None, ),  # 2
)
all_structs.append(BlameData)
BlameData.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'startLine', None, None, ),  # 1
    (2, TType.I64, 'endLine', None, None, ),  # 2
    (3, TType.STRING, 'commitHash', 'UTF8', None, ),  # 3
)
all_structs.append(CommitAuthor)
CommitAuthor.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'name', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'email', 'UTF8', None, ),  # 2
)
all_structs.append(Commit)
Commit.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'author', [CommitAuthor, None], None, ),  # 1
    (2, TType.STRING, 'summary', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'message', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'committedDateTime', 'UTF8', None, ),  # 4
)
all_structs.append(BlameInfo)
BlameInfo.thrift_spec = (
    None,  # 0
    (1, TType.MAP, 'commits', (TType.STRING, 'UTF8', TType.STRUCT, [Commit, None], False), None, ),  # 1
    (2, TType.LIST, 'blame', (TType.STRUCT, [BlameData, None], False), None, ),  # 2
)
all_structs.append(CleanupPlan)
CleanupPlan.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.I64, 'dueDate', None, None, ),  # 3
    (4, TType.STRING, 'description', 'UTF8', None, ),  # 4
    (5, TType.I64, 'closedAt', None, None, ),  # 5
    (6, TType.LIST, 'reportHashes', (TType.STRING, 'UTF8', False), None, ),  # 6
)
all_structs.append(CleanupPlanFilter)
CleanupPlanFilter.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'ids', (TType.I64, None, False), None, ),  # 1
    (2, TType.LIST, 'names', (TType.STRING, 'UTF8', False), None, ),  # 2
    (3, TType.BOOL, 'isOpen', None, None, ),  # 3
)
all_structs.append(Checker)
Checker.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'analyzerName', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'checkerId', 'UTF8', None, ),  # 2
)
fix_spec(all_structs)
del all_structs
