# Path: scripts/pyparsing/util.py
# class __config_flags:
# class _UnboundedCache:
# class _FifoCache:
#     def _set(cls, dname, value):
# def col(loc, strg):
# def lineno(loc, strg):
# def line(loc, strg):
#     def __init__(self):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
#     def __init__(self, size):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
# def _escapeRegexRangeChars(s):
# def _collapseAndEscapeRegexRangeChars(s):
#     def is_consecutive(c):
#     def escape_re_range_char(c):
# def _flatten(L):


import string
import copy
import sys
import warnings
import re
import sre_constants
import traceback
import types
                import pdb
    from collections.abc import Iterable
    from collections import Iterable
from operator import itemgetter
from functools import wraps
from threading import RLock
from .util import (
    _FifoCache,
    _UnboundedCache,
    __config_flags,
    _collapseAndEscapeRegexRangeChars,
    _escapeRegexRangeChars,
    _bslash,
    _flatten,
)
from pyparsing.exceptions import *
from pyparsing.actions import *
from pyparsing.results import ParseResults, _ParseResultsWithOffset

    def validate(self, validateTrace=None):
        tmp = (validateTrace if validateTrace is not None else [])[:] + [self]
        for e in self.exprs:
            e.validate(tmp)
        self.checkRecursion([])

    def copy(self):
        ret = super(ParseExpression, self).copy()
        ret.exprs = [e.copy() for e in self.exprs]
        return ret

    def _setResultsName(self, name, listAllMatches=False):
        if __diag__.warn_ungrouped_named_tokens_in_collection:
            for e in self.exprs:
                if isinstance(e, ParserElement) and e.resultsName:
                    warnings.warn(
                        "{}: setting results name {!r} on {} expression "
                        "collides with {!r} on contained expression".format(
                            "warn_ungrouped_named_tokens_in_collection",
                            name,
                            type(self).__name__,
                            e.resultsName,
                        ),
                        stacklevel=3,
                    )

        return super(ParseExpression, self)._setResultsName(name, listAllMatches)



# Path: scripts/pyparsing/util.py
# class __config_flags:
# class _UnboundedCache:
# class _FifoCache:
#     def _set(cls, dname, value):
# def col(loc, strg):
# def lineno(loc, strg):
# def line(loc, strg):
#     def __init__(self):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
#     def __init__(self, size):
#         def get(self, key):
#         def set(self, key, value):
#         def clear(self):
#         def cache_len(self):
# def _escapeRegexRangeChars(s):
# def _collapseAndEscapeRegexRangeChars(s):
#     def is_consecutive(c):
#     def escape_re_range_char(c):
# def _flatten(L):


# Path: scripts/pyparsing/core.py
import string
import copy
import sys
import warnings
import re
import sre_constants
import traceback
import types
                import pdb
    from collections.abc import Iterable
    from collections import Iterable
from operator import itemgetter
from functools import wraps
from threading import RLock
from .util import (
    _FifoCache,
    _UnboundedCache,
    __config_flags,
    _collapseAndEscapeRegexRangeChars,
    _escapeRegexRangeChars,
    _bslash,
    _flatten,
)
from pyparsing.exceptions import *
from pyparsing.actions import *
from pyparsing.results import ParseResults, _ParseResultsWithOffset


    def validate(self, validateTrace=None):
        tmp = (validateTrace if validateTrace is not None else [])[:] + [self]
        for e in self.exprs:
            e.validate(tmp)
        self.checkRecursion([])

    def copy(self):
        ret = super(ParseExpression, self).copy()
        ret.exprs = [e.copy() for e in self.exprs]
        return ret

    def _setResultsName(self, name, listAllMatches=False):
        if __diag__.warn_ungrouped_named_tokens_in_collection:
            for e in self.exprs:
                if isinstance(e, ParserElement) and e.resultsName:
                    warnings.warn(
                        "{}: setting results name {!r} on {} expression "
                        "collides with {!r} on contained expression".format(
                            "warn_ungrouped_named_tokens_in_collection",
                            name,
                            type(self).__name__,
                            e.resultsName,
                        ),
                        stacklevel=3,
                    )

        return super(ParseExpression, self)._setResultsName(name, listAllMatches)



class And(ParseExpression):