+class IndentScope(object):
+ def __init__(self, O):
+ self._O = O
+
+ def __enter__(self):
+ self._O._indent += ' '
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ self._O._indent = self._O._indent[:-4]
+
+class HeaderScope(object):
+ def __init__(self, O, hdr, indent = False):
+ self._O = O
+ self._header = hdr
+ self._indent = indent
+
+ def __enter__(self):
+ self._oldHeader = self._O._header
+ self._oldLastHeader = self._O._lastHeader
+ self._O._header = self._header
+ self._O._lastHeader = None
+ if self._indent:
+ self._O._indent += ' '
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ self._O._header = self._oldHeader
+ self._O._lastHeader = self._oldLastHeader
+ if self._indent:
+ self._O._indent = self._O._indent[:-4]
+
+class VT(object):
+ Black = "\033[38;5;0m"
+ DarkRed = "\033[38;5;1m"
+ DarkGreen = "\033[38;5;2m"
+ Brown = "\033[38;5;3m"
+ DarkBlue = "\033[38;5;4m"
+ DarkMagenta = "\033[38;5;5m"
+ DarkCyan = "\033[38;5;6m"
+ Grey = "\033[38;5;7m"
+
+ DarkGrey = "\033[38;5;8m"
+ Red = "\033[38;5;9m"
+ Green = "\033[38;5;10m"
+ Yellow = "\033[38;5;11m"
+ Blue = "\033[38;5;12m"
+ Magenta = "\033[38;5;13m"
+ Cyan = "\033[38;5;14m"
+ White = "\033[38;5;15m"
+
+ Default = "\033[39m"
+
+ Bold = "\033[1m"
+ EndBold = "\033[22m"
+
+ Oblique = "\033[3m"
+ EndOblique = "\033[23m"
+
+ Underline = "\033[4m"
+ EndUnderline = "\033[24m"
+
+ Reset = "\033[0m"
+
+class NOVT(object):
+ def __getattribute__(self, *args):
+ return ""
+